Edit file File name : product-title.php Content :<?php namespace ElementorPro\Modules\Woocommerce\Widgets; use Elementor\Widget_Heading; use ElementorPro\Base\Base_Widget_Trait; use ElementorPro\Plugin; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Product_Title extends Widget_Heading { use Base_Widget_Trait; public function get_name() { return 'woocommerce-product-title'; } public function get_title() { return esc_html__( 'Product Title', 'elementor-pro' ); } public function get_icon() { return 'eicon-product-title'; } public function get_categories() { return [ 'woocommerce-elements-single' ]; } public function get_keywords() { return [ 'woocommerce', 'shop', 'store', 'title', 'heading', 'product' ]; } public function get_inline_css_depends() { return [ [ 'name' => 'heading', 'is_core_dependency' => true, ], ]; } protected function register_controls() { parent::register_controls(); $this->update_control( 'title', [ 'dynamic' => [ 'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'woocommerce-product-title-tag' ), ], ], [ 'recursive' => true, ] ); $this->update_control( 'header_size', [ 'default' => 'h1', ] ); } protected function get_html_wrapper_class() { return parent::get_html_wrapper_class() . ' elementor-page-title elementor-widget-' . parent::get_name(); } protected function render() { $this->add_render_attribute( 'title', 'class', [ 'product_title', 'entry-title' ] ); parent::render(); } /** * Render Woocommerce Product Title output in the editor. * * Written as a Backbone JavaScript template and used to generate the live preview. * * @since 2.9.0 * @access protected */ protected function content_template() { ?> <# view.addRenderAttribute( 'title', 'class', [ 'product_title', 'entry-title' ] ); #> <?php parent::content_template(); } public function render_plain_content() {} public function get_group_name() { return 'woocommerce'; } } Save