get_main_id(); } public static function get_properties() { $properties = parent::get_properties(); $properties['support_wp_page_templates'] = true; return $properties; } protected function register_controls() { parent::register_controls(); $this->start_injection( [ 'of' => 'post_status', 'fallback' => [ 'of' => 'post_title', ], ] ); $this->add_control( 'page_template', [ 'label' => esc_html__( 'Page Layout', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => esc_html__( 'Default', 'elementor-pro' ), PageTemplatesModule::TEMPLATE_CANVAS => esc_html__( 'Elementor Canvas', 'elementor-pro' ), PageTemplatesModule::TEMPLATE_HEADER_FOOTER => esc_html__( 'Elementor Full Width', 'elementor-pro' ), ], ] ); $this->add_control( 'page_template_default_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => esc_html__( 'Default Page Template from your theme', 'elementor-pro' ), 'content_classes' => 'elementor-descriptor', 'condition' => [ 'page_template' => 'default', ], ] ); $this->add_control( 'page_template_canvas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => esc_html__( 'No header, no footer, just Elementor', 'elementor-pro' ), 'content_classes' => 'elementor-descriptor', 'condition' => [ 'page_template' => PageTemplatesModule::TEMPLATE_CANVAS, ], ] ); $this->add_control( 'page_template_header_footer_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => esc_html__( 'This template includes the header, full-width content and footer', 'elementor-pro' ), 'content_classes' => 'elementor-descriptor', 'condition' => [ 'page_template' => PageTemplatesModule::TEMPLATE_HEADER_FOOTER, ], ] ); $this->end_injection(); Post::register_style_controls( $this ); } /** * Add body classes. * * Add the body classes for the `style` controls selector. * * @param $body_classes * * @return array */ public function filter_body_classes( $body_classes ) { // Indicator for edit/preview an `archive` document, so it's a `single` elementor_library post - but need a behavior like an archive. $is_archive_template = 'archive' === Source_Local::get_template_type( get_the_ID() ); $add_body_class = false; if ( $this instanceof Archive && ( is_archive() || is_search() || is_home() || $is_archive_template ) ) { $add_body_class = true; } elseif ( $this instanceof Single_Base && ( is_singular() || is_404() ) && ! $is_archive_template ) { $add_body_class = true; } if ( $add_body_class ) { $body_classes[] = 'elementor-page-' . $this->get_main_id(); } return $body_classes; } public function __construct( array $data = [] ) { if ( $data ) { add_filter( 'body_class', [ $this, 'filter_body_classes' ] ); } parent::__construct( $data ); } }