<?php
class TFPostContent_Widget_Free extends \Elementor\Widget_Base {
public function get_name() {
return 'tfposts-content';
}
public function get_title() {
return esc_html__( 'TF Post Content', 'themesflat-addons-for-elementor' );
}
public function get_icon() {
return 'eicon-post-content';
}
public function get_categories() {
return [ 'themesflat_addons_single_post' ];
}
protected function register_controls() {
// Start Tab Setting
$this->start_controls_section( 'section_tabs',
[
'label' => esc_html__('Post Excerpt', 'themesflat-addons-for-elementor'),
]
);
$this->add_control(
'align',
[
'label' => esc_html__( 'Alignment', 'themesflat-addons-for-elementor' ),
'type' => \Elementor\Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'themesflat-addons-for-elementor' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'themesflat-addons-for-elementor' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'themesflat-addons-for-elementor' ),
'icon' => 'eicon-text-align-right',
],
'justify' => [
'title' => esc_html__( 'Justified', 'themesflat-addons-for-elementor' ),
'icon' => 'eicon-text-align-justify',
],
],
'selectors' => [
'{{WRAPPER}} .tf-post-content' => 'text-align: {{VALUE}}',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'typography',
'label' => esc_html__( 'Typography', 'themesflat-addons-for-elementor' ),
'selector' => '{{WRAPPER}} .tf-post-content',
]
);
$this->add_control(
'color',
[
'label' => esc_html__( 'Color', 'themesflat-addons-for-elementor' ),
'type' => \Elementor\Controls_Manager::COLOR,
'default' => '',
'selectors' => [
'{{WRAPPER}} .tf-post-content' => 'color: {{VALUE}}',
'{{WRAPPER}} .tf-post-content div' => 'color: {{VALUE}}',
],
]
);
$this->end_controls_section();
}
public function tf_render_post_content( $with_wrapper = true ) {
static $did_posts = [];
$post = get_post();
if ( post_password_required( $post->ID ) ) {
echo get_the_password_form( $post->ID );
return;
}
if ( isset( $did_posts[ $post->ID ] ) ) {
return;
}
$did_posts[ $post->ID ] = true;
$editor = \Elementor\Plugin::instance()->editor;
$is_edit_mode = $editor->is_edit_mode();
if ( \Elementor\Plugin::instance()->preview->is_preview_mode( $post->ID ) ) {
$content = \Elementor\Plugin::instance()->preview->builder_wrapper( '' );
} else {
$editor->set_edit_mode( false );
$content = \Elementor\Plugin::instance()->frontend->get_builder_content( $post->ID, true );
if ( empty( $content ) ) {
\Elementor\Plugin::instance()->frontend->remove_content_filter();
setup_postdata( $post );
echo apply_filters( 'the_content', get_the_content() );
wp_link_pages( [
'before' => '<div class="page-links tf-page-links"><span class="page-links-title tf-page-links-title">' . __( 'Pages:', 'themesflat-addons-for-elementor' ) . '</span>',
'after' => '</div>',
'link_before' => '<span>',
'link_after' => '</span>',
'pagelink' => '<span class="screen-reader-text">' . __( 'Page', 'themesflat-addons-for-elementor' ) . ' </span>%',
'separator' => '<span class="screen-reader-text">, </span>',
] );
\Elementor\Plugin::instance()->frontend->add_content_filter();
return;
} else {
$content = apply_filters( 'the_content', $content );
}
}
\Elementor\Plugin::instance()->editor->set_edit_mode( $is_edit_mode );
if ( $with_wrapper ) {
echo '<div class="tf-post-content">' . balanceTags( $content, true ) . '</div>';
} else {
echo '<div class="tf-post-content">' . $content . '</div>';
}
}
protected function render($instance = []) {
$settings = $this->get_settings_for_display();
$this->tf_render_post_content();
}
}