%PDF- %PDF-
Direktori : /home/eirtvhdf/cloudsslamllc.com/wp-content/plugins/elementor-pro/modules/posts/skins/ |
Current File : /home/eirtvhdf/cloudsslamllc.com/wp-content/plugins/elementor-pro/modules/posts/skins/skin-base.php |
<?php namespace ElementorPro\Modules\Posts\Skins; use Elementor\Controls_Manager; use Elementor\Core\Kits\Documents\Tabs\Global_Colors; use Elementor\Core\Kits\Documents\Tabs\Global_Typography; use Elementor\Group_Control_Css_Filter; use Elementor\Group_Control_Image_Size; use Elementor\Group_Control_Typography; use Elementor\Skin_Base as Elementor_Skin_Base; use Elementor\Widget_Base; use ElementorPro\Plugin; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } abstract class Skin_Base extends Elementor_Skin_Base { /** * @var string Save current permalink to avoid conflict with plugins the filters the permalink during the post render. */ protected $current_permalink; protected function _register_controls_actions() { add_action( 'elementor/element/posts/section_layout/before_section_end', [ $this, 'register_controls' ] ); add_action( 'elementor/element/posts/section_query/after_section_end', [ $this, 'register_style_sections' ] ); } public function register_style_sections( Widget_Base $widget ) { $this->parent = $widget; $this->register_design_controls(); } public function register_controls( Widget_Base $widget ) { $this->parent = $widget; $this->register_columns_controls(); $this->register_post_count_control(); $this->register_thumbnail_controls(); $this->register_title_controls(); $this->register_excerpt_controls(); $this->register_meta_data_controls(); $this->register_read_more_controls(); $this->register_link_controls(); } public function register_design_controls() { $this->register_design_layout_controls(); $this->register_design_image_controls(); $this->register_design_content_controls(); } protected function register_thumbnail_controls() { $this->add_control( 'thumbnail', [ 'label' => __( 'Image Position', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => 'top', 'options' => [ 'top' => __( 'Top', 'elementor-pro' ), 'left' => __( 'Left', 'elementor-pro' ), 'right' => __( 'Right', 'elementor-pro' ), 'none' => __( 'None', 'elementor-pro' ), ], 'prefix_class' => 'elementor-posts--thumbnail-', ] ); $this->add_control( 'masonry', [ 'label' => __( 'Masonry', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'label_off' => __( 'Off', 'elementor-pro' ), 'label_on' => __( 'On', 'elementor-pro' ), 'condition' => [ $this->get_control_id( 'columns!' ) => '1', $this->get_control_id( 'thumbnail' ) => 'top', ], 'render_type' => 'ui', 'frontend_available' => true, ] ); $this->add_group_control( Group_Control_Image_Size::get_type(), [ 'name' => 'thumbnail_size', 'default' => 'medium', 'exclude' => [ 'custom' ], 'condition' => [ $this->get_control_id( 'thumbnail!' ) => 'none', ], 'prefix_class' => 'elementor-posts--thumbnail-size-', ] ); $this->add_responsive_control( 'item_ratio', [ 'label' => __( 'Image Ratio', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'size' => 0.66, ], 'tablet_default' => [ 'size' => '', ], 'mobile_default' => [ 'size' => 0.5, ], 'range' => [ 'px' => [ 'min' => 0.1, 'max' => 2, 'step' => 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-posts-container .elementor-post__thumbnail' => 'padding-bottom: calc( {{SIZE}} * 100% );', '{{WRAPPER}}:after' => 'content: "{{SIZE}}";', ], 'condition' => [ $this->get_control_id( 'thumbnail!' ) => 'none', $this->get_control_id( 'masonry' ) => '', ], ] ); $this->add_responsive_control( 'image_width', [ 'label' => __( 'Image Width', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'range' => [ '%' => [ 'min' => 10, 'max' => 100, ], 'px' => [ 'min' => 10, 'max' => 600, ], ], 'default' => [ 'size' => 100, 'unit' => '%', ], 'tablet_default' => [ 'size' => '', 'unit' => '%', ], 'mobile_default' => [ 'size' => 100, 'unit' => '%', ], 'size_units' => [ '%', 'px' ], 'selectors' => [ '{{WRAPPER}} .elementor-post__thumbnail__link' => 'width: {{SIZE}}{{UNIT}};', ], 'condition' => [ $this->get_control_id( 'thumbnail!' ) => 'none', ], ] ); } protected function register_columns_controls() { $this->add_responsive_control( 'columns', [ 'label' => __( 'Columns', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'default' => '3', 'tablet_default' => '2', 'mobile_default' => '1', 'options' => [ '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', ], 'prefix_class' => 'elementor-grid%s-', 'frontend_available' => true, ] ); } protected function register_post_count_control() { $this->add_control( 'posts_per_page', [ 'label' => __( 'Posts Per Page', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, 'default' => 6, ] ); } protected function register_title_controls() { $this->add_control( 'show_title', [ 'label' => __( 'Title', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Show', 'elementor-pro' ), 'label_off' => __( 'Hide', 'elementor-pro' ), 'default' => 'yes', 'separator' => 'before', ] ); $this->add_control( 'title_tag', [ 'label' => __( 'Title HTML Tag', 'elementor-pro' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'h1' => 'H1', 'h2' => 'H2', 'h3' => 'H3', 'h4' => 'H4', 'h5' => 'H5', 'h6' => 'H6', 'div' => 'div', 'span' => 'span', 'p' => 'p', ], 'default' => 'h3', 'condition' => [ $this->get_control_id( 'show_title' ) => 'yes', ], ] ); } protected function register_excerpt_controls() { $this->add_control( 'show_excerpt', [ 'label' => __( 'Excerpt', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Show', 'elementor-pro' ), 'label_off' => __( 'Hide', 'elementor-pro' ), 'default' => 'yes', ] ); $this->add_control( 'excerpt_length', [ 'label' => __( 'Excerpt Length', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, /** This filter is documented in wp-includes/formatting.php */ 'default' => apply_filters( 'excerpt_length', 25 ), 'condition' => [ $this->get_control_id( 'show_excerpt' ) => 'yes', ], ] ); } protected function register_read_more_controls() { $this->add_control( 'show_read_more', [ 'label' => __( 'Read More', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Show', 'elementor-pro' ), 'label_off' => __( 'Hide', 'elementor-pro' ), 'default' => 'yes', 'separator' => 'before', ] ); $this->add_control( 'read_more_text', [ 'label' => __( 'Read More Text', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'default' => __( 'Read More ยป', 'elementor-pro' ), 'condition' => [ $this->get_control_id( 'show_read_more' ) => 'yes', ], ] ); } protected function register_link_controls() { $this->add_control( 'open_new_tab', [ 'label' => __( 'Open in new window', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'label_on' => __( 'Yes', 'elementor-pro' ), 'label_off' => __( 'No', 'elementor-pro' ), 'default' => 'no', 'render_type' => 'none', ] ); } protected function get_optional_link_attributes_html() { $settings = $this->parent->get_settings(); $new_tab_setting_key = $this->get_control_id( 'open_new_tab' ); $optional_attributes_html = 'yes' === $settings[ $new_tab_setting_key ] ? 'target="_blank"' : ''; return $optional_attributes_html; } protected function register_meta_data_controls() { $this->add_control( 'meta_data', [ 'label' => __( 'Meta Data', 'elementor-pro' ), 'label_block' => true, 'type' => Controls_Manager::SELECT2, 'default' => [ 'date', 'comments' ], 'multiple' => true, 'options' => [ 'author' => __( 'Author', 'elementor-pro' ), 'date' => __( 'Date', 'elementor-pro' ), 'time' => __( 'Time', 'elementor-pro' ), 'comments' => __( 'Comments', 'elementor-pro' ), 'modified' => __( 'Date Modified', 'elementor-pro' ), ], 'separator' => 'before', ] ); $this->add_control( 'meta_separator', [ 'label' => __( 'Separator Between', 'elementor-pro' ), 'type' => Controls_Manager::TEXT, 'default' => '///', 'selectors' => [ '{{WRAPPER}} .elementor-post__meta-data span + span:before' => 'content: "{{VALUE}}"', ], 'condition' => [ $this->get_control_id( 'meta_data!' ) => [], ], ] ); } /** * Style Tab */ protected function register_design_layout_controls() { $this->start_controls_section( 'section_design_layout', [ 'label' => __( 'Layout', 'elementor-pro' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'column_gap', [ 'label' => __( 'Columns Gap', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'size' => 30, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}}' => '--grid-column-gap: {{SIZE}}{{UNIT}}', ], ] ); $this->add_control( 'row_gap', [ 'label' => __( 'Rows Gap', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'size' => 35, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ], ], 'frontend_available' => true, 'selectors' => [ '{{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}', ], ] ); $this->add_control( 'alignment', [ 'label' => __( 'Alignment', 'elementor-pro' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-pro' ), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-pro' ), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-pro' ), 'icon' => 'eicon-text-align-right', ], ], 'prefix_class' => 'elementor-posts--align-', ] ); $this->end_controls_section(); } protected function register_design_image_controls() { $this->start_controls_section( 'section_design_image', [ 'label' => __( 'Image', 'elementor-pro' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ $this->get_control_id( 'thumbnail!' ) => 'none', ], ] ); $this->add_control( 'img_border_radius', [ 'label' => __( 'Border Radius', 'elementor-pro' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .elementor-post__thumbnail' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ $this->get_control_id( 'thumbnail!' ) => 'none', ], ] ); $this->add_control( 'image_spacing', [ 'label' => __( 'Spacing', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link' => 'margin-right: {{SIZE}}{{UNIT}}', '{{WRAPPER}}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link' => 'margin-left: {{SIZE}}{{UNIT}}', '{{WRAPPER}}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link' => 'margin-bottom: {{SIZE}}{{UNIT}}', ], 'default' => [ 'size' => 20, ], 'condition' => [ $this->get_control_id( 'thumbnail!' ) => 'none', ], ] ); $this->start_controls_tabs( 'thumbnail_effects_tabs' ); $this->start_controls_tab( 'normal', [ 'label' => __( 'Normal', 'elementor-pro' ), ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'thumbnail_filters', 'selector' => '{{WRAPPER}} .elementor-post__thumbnail img', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'hover', [ 'label' => __( 'Hover', 'elementor-pro' ), ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'thumbnail_hover_filters', 'selector' => '{{WRAPPER}} .elementor-post:hover .elementor-post__thumbnail img', ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } protected function register_design_content_controls() { $this->start_controls_section( 'section_design_content', [ 'label' => __( 'Content', 'elementor-pro' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'heading_title_style', [ 'label' => __( 'Title', 'elementor-pro' ), 'type' => Controls_Manager::HEADING, 'condition' => [ $this->get_control_id( 'show_title' ) => 'yes', ], ] ); $this->add_control( 'title_color', [ 'label' => __( 'Color', 'elementor-pro' ), 'type' => Controls_Manager::COLOR, 'global' => [ 'default' => Global_Colors::COLOR_SECONDARY, ], 'selectors' => [ '{{WRAPPER}} .elementor-post__title, {{WRAPPER}} .elementor-post__title a' => 'color: {{VALUE}};', ], 'condition' => [ $this->get_control_id( 'show_title' ) => 'yes', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'title_typography', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, ], 'selector' => '{{WRAPPER}} .elementor-post__title, {{WRAPPER}} .elementor-post__title a', 'condition' => [ $this->get_control_id( 'show_title' ) => 'yes', ], ] ); $this->add_control( 'title_spacing', [ 'label' => __( 'Spacing', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-post__title' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], 'condition' => [ $this->get_control_id( 'show_title' ) => 'yes', ], ] ); $this->add_control( 'heading_meta_style', [ 'label' => __( 'Meta', 'elementor-pro' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ $this->get_control_id( 'meta_data!' ) => [], ], ] ); $this->add_control( 'meta_color', [ 'label' => __( 'Color', 'elementor-pro' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-post__meta-data' => 'color: {{VALUE}};', ], 'condition' => [ $this->get_control_id( 'meta_data!' ) => [], ], ] ); $this->add_control( 'meta_separator_color', [ 'label' => __( 'Separator Color', 'elementor-pro' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-post__meta-data span:before' => 'color: {{VALUE}};', ], 'condition' => [ $this->get_control_id( 'meta_data!' ) => [], ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'meta_typography', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, ], 'selector' => '{{WRAPPER}} .elementor-post__meta-data', 'condition' => [ $this->get_control_id( 'meta_data!' ) => [], ], ] ); $this->add_control( 'meta_spacing', [ 'label' => __( 'Spacing', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-post__meta-data' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], 'condition' => [ $this->get_control_id( 'meta_data!' ) => [], ], ] ); $this->add_control( 'heading_excerpt_style', [ 'label' => __( 'Excerpt', 'elementor-pro' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ $this->get_control_id( 'show_excerpt' ) => 'yes', ], ] ); $this->add_control( 'excerpt_color', [ 'label' => __( 'Color', 'elementor-pro' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-post__excerpt p' => 'color: {{VALUE}};', ], 'condition' => [ $this->get_control_id( 'show_excerpt' ) => 'yes', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'excerpt_typography', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .elementor-post__excerpt p', 'condition' => [ $this->get_control_id( 'show_excerpt' ) => 'yes', ], ] ); $this->add_control( 'excerpt_spacing', [ 'label' => __( 'Spacing', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-post__excerpt' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], 'condition' => [ $this->get_control_id( 'show_excerpt' ) => 'yes', ], ] ); $this->add_control( 'heading_readmore_style', [ 'label' => __( 'Read More', 'elementor-pro' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ $this->get_control_id( 'show_read_more' ) => 'yes', ], ] ); $this->add_control( 'read_more_color', [ 'label' => __( 'Color', 'elementor-pro' ), 'type' => Controls_Manager::COLOR, 'global' => [ 'default' => Global_Colors::COLOR_ACCENT, ], 'selectors' => [ '{{WRAPPER}} .elementor-post__read-more' => 'color: {{VALUE}};', ], 'condition' => [ $this->get_control_id( 'show_read_more' ) => 'yes', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'read_more_typography', 'selector' => '{{WRAPPER}} .elementor-post__read-more', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_ACCENT, ], 'condition' => [ $this->get_control_id( 'show_read_more' ) => 'yes', ], ] ); $this->add_control( 'read_more_spacing', [ 'label' => __( 'Spacing', 'elementor-pro' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-post__text' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], 'condition' => [ $this->get_control_id( 'show_read_more' ) => 'yes', ], ] ); $this->end_controls_section(); } public function render() { $this->parent->query_posts(); /** @var \WP_Query $query */ $query = $this->parent->get_query(); if ( ! $query->found_posts ) { return; } $this->render_loop_header(); // It's the global `wp_query` it self. and the loop was started from the theme. if ( $query->in_the_loop ) { $this->current_permalink = get_permalink(); $this->render_post(); } else { while ( $query->have_posts() ) { $query->the_post(); $this->current_permalink = get_permalink(); $this->render_post(); } } wp_reset_postdata(); $this->render_loop_footer(); } public function filter_excerpt_length() { return $this->get_instance_value( 'excerpt_length' ); } public function filter_excerpt_more( $more ) { return ''; } public function get_container_class() { return 'elementor-posts--skin-' . $this->get_id(); } protected function render_thumbnail() { $thumbnail = $this->get_instance_value( 'thumbnail' ); if ( 'none' === $thumbnail && ! Plugin::elementor()->editor->is_edit_mode() ) { return; } $settings = $this->parent->get_settings(); $setting_key = $this->get_control_id( 'thumbnail_size' ); $settings[ $setting_key ] = [ 'id' => get_post_thumbnail_id(), ]; $thumbnail_html = Group_Control_Image_Size::get_attachment_image_html( $settings, $setting_key ); if ( empty( $thumbnail_html ) ) { return; } $optional_attributes_html = $this->get_optional_link_attributes_html(); ?> <a class="elementor-post__thumbnail__link" href="<?php echo $this->current_permalink; ?>" <?php echo $optional_attributes_html; ?>> <div class="elementor-post__thumbnail"><?php echo $thumbnail_html; ?></div> </a> <?php } protected function render_title() { if ( ! $this->get_instance_value( 'show_title' ) ) { return; } $optional_attributes_html = $this->get_optional_link_attributes_html(); $tag = $this->get_instance_value( 'title_tag' ); ?> <<?php echo $tag; ?> class="elementor-post__title"> <a href="<?php echo $this->current_permalink; ?>" <?php echo $optional_attributes_html; ?>> <?php the_title(); ?> </a> </<?php echo $tag; ?>> <?php } protected function render_excerpt() { add_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 20 ); add_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ], 20 ); if ( ! $this->get_instance_value( 'show_excerpt' ) ) { return; } add_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 20 ); add_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ], 20 ); ?> <div class="elementor-post__excerpt"> <?php the_excerpt(); ?> </div> <?php remove_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ], 20 ); remove_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 20 ); } protected function render_read_more() { if ( ! $this->get_instance_value( 'show_read_more' ) ) { return; } $optional_attributes_html = $this->get_optional_link_attributes_html(); ?> <a class="elementor-post__read-more" href="<?php echo $this->current_permalink; ?>" <?php echo $optional_attributes_html; ?>> <?php echo $this->get_instance_value( 'read_more_text' ); ?> </a> <?php } protected function render_post_header() { ?> <article <?php post_class( [ 'elementor-post elementor-grid-item' ] ); ?>> <?php } protected function render_post_footer() { ?> </article> <?php } protected function render_text_header() { ?> <div class="elementor-post__text"> <?php } protected function render_text_footer() { ?> </div> <?php } protected function render_loop_header() { $classes = [ 'elementor-posts-container', 'elementor-posts', $this->get_container_class(), ]; /** @var \WP_Query $wp_query */ $wp_query = $this->parent->get_query(); // Use grid only if found posts. if ( $wp_query->found_posts ) { $classes[] = 'elementor-grid'; } $this->parent->add_render_attribute( 'container', [ 'class' => $classes, ] ); ?> <div <?php echo $this->parent->get_render_attribute_string( 'container' ); ?>> <?php } protected function render_loop_footer() { ?> </div> <?php $parent_settings = $this->parent->get_settings(); if ( '' === $parent_settings['pagination_type'] ) { return; } $page_limit = $this->parent->get_query()->max_num_pages; if ( '' !== $parent_settings['pagination_page_limit'] ) { $page_limit = min( $parent_settings['pagination_page_limit'], $page_limit ); } if ( 2 > $page_limit ) { return; } $this->parent->add_render_attribute( 'pagination', 'class', 'elementor-pagination' ); $has_numbers = in_array( $parent_settings['pagination_type'], [ 'numbers', 'numbers_and_prev_next' ] ); $has_prev_next = in_array( $parent_settings['pagination_type'], [ 'prev_next', 'numbers_and_prev_next' ] ); $links = []; if ( $has_numbers ) { $paginate_args = [ 'type' => 'array', 'current' => $this->parent->get_current_page(), 'total' => $page_limit, 'prev_next' => false, 'show_all' => 'yes' !== $parent_settings['pagination_numbers_shorten'], 'before_page_number' => '<span class="elementor-screen-only">' . __( 'Page', 'elementor-pro' ) . '</span>', ]; if ( is_singular() && ! is_front_page() ) { global $wp_rewrite; if ( $wp_rewrite->using_permalinks() ) { $paginate_args['base'] = trailingslashit( get_permalink() ) . '%_%'; $paginate_args['format'] = user_trailingslashit( '%#%', 'single_paged' ); } else { $paginate_args['format'] = '?page=%#%'; } } $links = paginate_links( $paginate_args ); } if ( $has_prev_next ) { $prev_next = $this->parent->get_posts_nav_link( $page_limit ); array_unshift( $links, $prev_next['prev'] ); $links[] = $prev_next['next']; } ?> <nav class="elementor-pagination" role="navigation" aria-label="<?php esc_attr_e( 'Pagination', 'elementor-pro' ); ?>"> <?php echo implode( PHP_EOL, $links ); ?> </nav> <?php } protected function render_meta_data() { /** @var array $settings e.g. [ 'author', 'date', ... ] */ $settings = $this->get_instance_value( 'meta_data' ); if ( empty( $settings ) ) { return; } ?> <div class="elementor-post__meta-data"> <?php if ( in_array( 'author', $settings ) ) { $this->render_author(); } if ( in_array( 'date', $settings ) ) { $this->render_date_by_type(); } if ( in_array( 'time', $settings ) ) { $this->render_time(); } if ( in_array( 'comments', $settings ) ) { $this->render_comments(); } if ( in_array( 'modified', $settings ) ) { $this->render_date_by_type( 'modified' ); } ?> </div> <?php } protected function render_author() { ?> <span class="elementor-post-author"> <?php the_author(); ?> </span> <?php } /** * @deprecated since 3.0.0 Use `Skin_Base::render_date_by_type()` instead */ protected function render_date() { // _deprecated_function( __METHOD__, '3.0.0', 'Skin_Base::render_date_by_type()' ); $this->render_date_by_type(); } protected function render_date_by_type( $type = 'publish' ) { ?> <span class="elementor-post-date"> <?php switch ( $type ) : case 'modified': $date = get_the_modified_date(); break; default: $date = get_the_date(); endswitch; /** This filter is documented in wp-includes/general-template.php */ echo apply_filters( 'the_date', $date, get_option( 'date_format' ), '', '' ); ?> </span> <?php } protected function render_time() { ?> <span class="elementor-post-time"> <?php the_time(); ?> </span> <?php } protected function render_comments() { ?> <span class="elementor-post-avatar"> <?php comments_number(); ?> </span> <?php } protected function render_post() { $this->render_post_header(); $this->render_thumbnail(); $this->render_text_header(); $this->render_title(); $this->render_meta_data(); $this->render_excerpt(); $this->render_read_more(); $this->render_text_footer(); $this->render_post_footer(); } public function render_amp() { } }