PATH:
home
/
lab2454c
/
mact34.com
/
wp-content
/
plugins
/
bdthemes-element-pack
/
modules
/
portfolio-list
/
widgets
<?php namespace ElementPack\Modules\PortfolioList\Widgets; use ElementPack\Base\Module_Base; use Elementor\Controls_Manager; use Elementor\Group_Control_Border; use Elementor\Group_Control_Image_Size; use Elementor\Group_Control_Typography; use Elementor\Group_Control_Box_Shadow; use Elementor\Group_Control_Background; use ElementPack\Utils; use ElementPack\Modules\QueryControl\Controls\Group_Control_Posts; if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly class Portfolio_List extends Module_Base { private $_query = null; public function get_name() { return 'bdt-portfolio-list'; } public function get_title() { return BDTEP . esc_html__( 'Portfolio List', 'bdthemes-element-pack' ); } public function get_icon() { return 'bdt-wi-portfolio-list'; } public function get_categories() { return [ 'element-pack' ]; } public function get_keywords() { return [ 'portfolio', 'gallery', 'blog', 'recent', 'news', 'works', 'list' ]; } public function get_style_depends() { if ($this->ep_is_edit_mode()) { return ['ep-all-styles']; } else { return ['ep-portfolio-list']; } } public function get_script_depends() { return [ 'imagesloaded', 'tilt', 'bdt-uikit-icons' ]; } public function on_import( $element ) { if ( ! get_post_type_object( $element['settings']['posts_post_type'] ) ) { $element['settings']['posts_post_type'] = 'post'; } return $element; } public function on_export( $element ) { $element = Group_Control_Posts::on_export_remove_setting_from_element( $element, 'posts' ); return $element; } public function get_query() { return $this->_query; } public function _register_controls() { $this->register_section_controls(); } private function register_section_controls() { $this->start_controls_section( 'section_content_layout', [ 'label' => esc_html__( 'Layout', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'show_horizontal_layout', [ 'label' => esc_html__( 'Horizontal Layout', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, ] ); $this->add_responsive_control( 'columns', [ 'label' => esc_html__( 'Columns', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT, 'default' => '2', 'tablet_default' => '2', 'mobile_default' => '1', 'options' => [ '2' => 'Two', '3' => 'Three', '4' => 'Four', ], 'frontend_available' => true, 'condition' => [ 'show_horizontal_layout' => 'yes', ], ] ); $this->add_control( 'show_pagination', [ 'label' => esc_html__( 'Pagination', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, ] ); $this->end_controls_section(); $this->start_controls_section( 'section_query', [ 'label' => esc_html__( 'Query', 'bdthemes-element-pack' ), ] ); $this->add_control( 'source', [ 'label' => _x( 'Source', 'Posts Query Control', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT, 'options' => [ '' => esc_html__( 'Show All', 'bdthemes-element-pack' ), 'by_name' => esc_html__( 'Manual Selection', 'bdthemes-element-pack' ), ], 'label_block' => true, ] ); $this->add_control( 'post_categories', [ 'label' => esc_html__( 'Categories', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT2, 'options' => element_pack_get_category('portfolio_filter'), 'default' => [], 'label_block' => true, 'multiple' => true, 'condition' => [ 'source' => 'by_name', ], ] ); $this->add_control( 'limit', [ 'label' => esc_html__( 'Limit', 'bdthemes-element-pack' ), 'type' => Controls_Manager::NUMBER, 'default' => 8, ] ); $this->add_control( 'orderby', [ 'label' => esc_html__( 'Order by', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT, 'default' => 'date', 'options' => [ 'date' => esc_html__( 'Date', 'bdthemes-element-pack' ), 'title' => esc_html__( 'Title', 'bdthemes-element-pack' ), 'category' => esc_html__( 'Category', 'bdthemes-element-pack' ), 'rand' => esc_html__( 'Random', 'bdthemes-element-pack' ), ], ] ); $this->add_control( 'order', [ 'label' => esc_html__( 'Order', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT, 'default' => 'DESC', 'options' => [ 'DESC' => esc_html__( 'Descending', 'bdthemes-element-pack' ), 'ASC' => esc_html__( 'Ascending', 'bdthemes-element-pack' ), ], ] ); $this->add_control( 'offset', [ 'label' => esc_html__( 'Offset', 'bdthemes-element-pack' ), 'type' => Controls_Manager::NUMBER, 'default' => 0, 'condition' => [ 'posts_post_type!' => 'by_id', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_layout_additional', [ 'label' => esc_html__( 'Additional', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'show_title', [ 'label' => esc_html__( 'Title', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ] ); $this->add_control( 'title_tag', [ 'label' => esc_html__( 'Title HTML Tag', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SELECT, 'options' => element_pack_title_tags(), 'default' => 'h4', 'condition' => [ 'show_title' => 'yes', ], ] ); $this->add_control( 'show_excerpt', [ 'label' => esc_html__( 'Show Text', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', ] ); $this->add_control( 'excerpt_limit', [ 'label' => esc_html__( 'Text Limit', 'bdthemes-element-pack' ), 'description' => esc_html__('It\'s just work for main content, but not working with excerpt. If you set 0 so you will get full main content.', 'bdthemes-element-pack'), 'type' => Controls_Manager::NUMBER, 'default' => 15, 'condition' => [ 'show_excerpt' => 'yes', ], ] ); $this->add_control( 'strip_shortcode', [ 'label' => esc_html__('Strip Shortcode', 'bdthemes-element-pack'), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'condition' => [ 'show_excerpt' => 'yes', ], ] ); $this->add_control( 'show_category', [ 'label' => esc_html__( 'Show Category', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, ] ); $this->add_control( 'external_link', [ 'label' => esc_html__( 'Show in new Tab (Details Link/Title)', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, 'condition' => [ 'show_title' => 'yes', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_design_layout', [ 'label' => esc_html__( 'Items', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_responsive_control( 'item_gap', [ 'label' => esc_html__( 'Column Gap', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'size' => 30, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, 'step' => 5, ], ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list.bdt-grid' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .bdt-portfolio-list.bdt-grid > *' => 'padding-left: {{SIZE}}px', ], 'condition' => [ 'show_horizontal_layout' => 'yes', ], ] ); $this->add_responsive_control( 'row_gap', [ 'label' => esc_html__( 'Row Gap', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'default' => [ 'size' => 30, ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, 'step' => 5, ], ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list.bdt-grid' => 'margin-top: -{{SIZE}}px', '{{WRAPPER}} .bdt-portfolio-list.bdt-grid > *' => 'margin-top: {{SIZE}}px', ], ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'item_border', 'label' => esc_html__( 'Border', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-inner', ] ); $this->add_control( 'item_border_radius', [ 'label' => esc_html__( 'Border Radius', 'bdthemes-element-pack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-inner, {{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_control( 'content_headline', [ 'label' => esc_html__( 'Content', 'bdthemes-element-pack' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->add_control( 'portfolio_content_alignment', [ 'label' => __( 'Alignment', 'bdthemes-element-pack' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => __( 'Left', 'bdthemes-element-pack' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'bdthemes-element-pack' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'bdthemes-element-pack' ), 'icon' => 'fa fa-align-right', ], ], 'default' => 'left', 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-desc' => 'text-align: {{VALUE}}', ], ] ); $this->add_control( 'desc_background_color', [ 'label' => esc_html__( 'Background Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-inner' => 'background: {{VALUE}};', ], ] ); $this->add_control( 'desc__padding', [ 'label' => esc_html__( 'Padding', 'bdthemes-element-pack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-desc' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_thumbnail', [ 'label' => esc_html__( 'Thumbnail', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_responsive_control( 'thumbnail_size', [ 'label' => esc_html__( 'Image Size', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 100, 'max' => 1000, ], ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img' => 'min-height: {{SIZE}}{{UNIT}}; min-width: {{SIZE}}{{UNIT}};', ], ] ); $this->add_control( 'image_background_color', [ 'label' => esc_html__( 'Background Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img' => 'background: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'image_box_shadow', 'selector' => '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img', ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'border', 'label' => esc_html__( 'Border', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img', ] ); $this->add_control( 'image_border_radius', [ 'label' => esc_html__( 'Border Radius', 'bdthemes-element-pack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'border_radius_advanced_show!' => 'yes', ], ] ); $this->add_control( 'border_radius_advanced_show', [ 'label' => __( 'Advanced Radius', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SWITCHER, ] ); $this->add_control( 'border_radius_advanced', [ 'label' => esc_html__('Radius', 'bdthemes-element-pack'), 'description' => sprintf(__('For example: <b>%1s</b> or Go <a href="%2s" target="_blank">this link</a> and copy and paste the radius value.', 'bdthemes-element-pack'), '30% 70% 82% 18% / 46% 62% 38% 54%', 'https://9elements.github.io/fancy-border-radius/'), 'type' => Controls_Manager::TEXT, 'size_units' => [ 'px', '%' ], 'separator' => 'after', 'default' => '30% 70% 82% 18% / 46% 62% 38% 54%', 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img' => 'border-radius: {{VALUE}}; overflow: hidden;', ], 'condition' => [ 'border_radius_advanced_show' => 'yes', ], ] ); $this->add_control( 'image_padding', [ 'label' => esc_html__( 'Padding', 'bdthemes-element-pack' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-thumbnail img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_title', [ 'label' => esc_html__( 'Title', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'show_title' => 'yes', ], ] ); $this->add_control( 'title_color', [ 'label' => esc_html__( 'Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-item .bdt-gallery-item-title' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'title_spacing', [ 'label' => esc_html__( 'Spacing', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 50, ], ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-item .bdt-gallery-item-title' => 'padding-bottom: {{SIZE}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'title_typography', 'label' => esc_html__( 'Typography', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} .bdt-gallery-item .bdt-gallery-item-title', ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_excerpt', [ 'label' => esc_html__( 'Text', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'show_excerpt' => 'yes', ], ] ); $this->add_control( 'excerpt_color', [ 'label' => esc_html__( 'Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-excerpt' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'excerpt_typography', 'label' => esc_html__( 'Typography', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} .bdt-portfolio-list .bdt-portfolio-excerpt', ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_category', [ 'label' => esc_html__( 'Category', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'show_category' => 'yes', ] ] ); $this->add_control( 'category_color', [ 'label' => esc_html__( 'Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-item-tags' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'category_spacing', [ 'label' => esc_html__( 'Spacing', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 50, ], ], 'selectors' => [ '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-item-tags' => 'padding-top: {{SIZE}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'category_typography', 'label' => esc_html__( 'Typography', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} .bdt-portfolio-list .bdt-gallery-item-tag', ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_pagination', [ 'label' => esc_html__( 'Pagination', 'bdthemes-element-pack' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'show_pagination' => 'yes', ], ] ); $this->start_controls_tabs( 'tabs_pagination_style' ); $this->start_controls_tab( 'tab_pagination_normal', [ 'label' => esc_html__( 'Normal', 'bdthemes-element-pack' ), ] ); $this->add_control( 'pagination_color', [ 'label' => esc_html__( 'Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li a, {{WRAPPER}} ul.bdt-pagination li span' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'pagination_background', 'selector' => '{{WRAPPER}} ul.bdt-pagination li a', 'separator' => 'after', ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'pagination_border', 'label' => esc_html__( 'Border', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} ul.bdt-pagination li a', ] ); $this->add_responsive_control( 'pagination_offset', [ 'label' => esc_html__( 'Offset', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => [ '{{WRAPPER}} .bdt-pagination' => 'margin-top: {{SIZE}}px;', ], ] ); $this->add_responsive_control( 'pagination_space', [ 'label' => esc_html__( 'Spacing', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => [ '{{WRAPPER}} .bdt-pagination' => 'margin-left: {{SIZE}}px;', '{{WRAPPER}} .bdt-pagination > *' => 'padding-left: {{SIZE}}px;', ], ] ); $this->add_responsive_control( 'pagination_padding', [ 'label' => esc_html__( 'Padding', 'bdthemes-element-pack' ), 'type' => Controls_Manager::DIMENSIONS, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li a' => 'padding: {{TOP}}px {{RIGHT}}px {{BOTTOM}}px {{LEFT}}px;', ], ] ); $this->add_responsive_control( 'pagination_radius', [ 'label' => esc_html__( 'Radius', 'bdthemes-element-pack' ), 'type' => Controls_Manager::DIMENSIONS, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li a' => 'border-radius: {{TOP}}px {{RIGHT}}px {{BOTTOM}}px {{LEFT}}px;', ], ] ); $this->add_responsive_control( 'pagination_arrow_size', [ 'label' => esc_html__( 'Arrow Size', 'bdthemes-element-pack' ), 'type' => Controls_Manager::SLIDER, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li a svg' => 'height: {{SIZE}}px; width: auto;', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'pagination_typography', 'label' => esc_html__( 'Typography', 'bdthemes-element-pack' ), 'selector' => '{{WRAPPER}} ul.bdt-pagination li a, {{WRAPPER}} ul.bdt-pagination li span', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_pagination_hover', [ 'label' => esc_html__( 'Hover', 'bdthemes-element-pack' ), ] ); $this->add_control( 'pagination_hover_color', [ 'label' => esc_html__( 'Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li a:hover' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'pagination_hover_border_color', [ 'label' => esc_html__( 'Border Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li a:hover' => 'border-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'pagination_hover_background', 'selector' => '{{WRAPPER}} ul.bdt-pagination li a:hover', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_pagination_active', [ 'label' => esc_html__( 'Active', 'bdthemes-element-pack' ), ] ); $this->add_control( 'pagination_active_color', [ 'label' => esc_html__( 'Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li.bdt-active a' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'pagination_active_border_color', [ 'label' => esc_html__( 'Border Color', 'bdthemes-element-pack' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} ul.bdt-pagination li.bdt-active a' => 'border-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'pagination_active_background', 'selector' => '{{WRAPPER}} ul.bdt-pagination li.bdt-active a', ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } public function get_taxonomies() { $taxonomies = get_taxonomies( [ 'show_in_nav_menus' => true ], 'objects' ); $options = [ '' => '' ]; foreach ( $taxonomies as $taxonomy ) { $options[ $taxonomy->name ] = $taxonomy->label; } return $options; } public function query_posts() { $settings = $this->get_settings_for_display(); if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $args = array( 'post_type' => 'portfolio', 'posts_per_page' => $settings['limit'], 'orderby' => $settings['orderby'], 'order' => $settings['order'], 'post_status' => 'publish', 'paged' => $paged ); if ( 'by_name' === $settings['source'] and !empty($settings['post_categories']) ) { $args['tax_query'][] = array( 'taxonomy' => 'portfolio_filter', 'field' => 'slug', 'terms' => $settings['post_categories'], ); } $query = new \WP_Query( $args ); return $query; } public function render() { $settings = $this->get_settings_for_display(); $wp_query = $this->query_posts(); if ( ! $wp_query->found_posts ) { return; } $this->render_header(); while ( $wp_query->have_posts() ) { $wp_query->the_post(); $this->render_post(); } $this->render_footer(); if ($settings['show_pagination']) { ?> <div class="ep-pagination"> <?php element_pack_post_pagination($wp_query); ?> </div> <?php } wp_reset_postdata(); } public function render_thumbnail() { $settings = $this->get_settings_for_display(); $settings['thumbnail_size'] = [ 'id' => get_post_thumbnail_id(), ]; $thumbnail_html = Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail_size' ); $placeholder_img_src = Utils::get_placeholder_image_src(); $img_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' ); if ( ! $thumbnail_html ) { $thumbnail_html = '<img src="' . esc_url( $placeholder_img_src) . '" alt="' . get_the_title() . '">'; } ?> <div class="bdt-gallery-thumbnail"> <?php echo $thumbnail_html ?> </div> <?php } public function render_title() { $settings = $this->get_settings_for_display(); if ( ! $settings['show_title'] ) { return; } $tag = $settings['title_tag']; $target = ( $settings['external_link'] ) ? 'target="_blank"' : ''; ?> <a href="<?php echo get_the_permalink(); ?>" <?php echo $target; ?>> <<?php echo Utils::get_valid_html_tag($tag) ?> class="bdt-gallery-item-title bdt-margin-remove"> <?php the_title() ?> </<?php echo Utils::get_valid_html_tag($tag) ?>> </a> <?php } public function render_excerpt() { if ( ! $this->get_settings( 'show_excerpt' ) ) { return; } $strip_shortcode = $this->get_settings_for_display('strip_shortcode'); ?> <div class="bdt-portfolio-excerpt"> <?php if ( has_excerpt() ) { the_excerpt(); } else { echo element_pack_custom_excerpt($this->get_settings_for_display('excerpt_limit'), $strip_shortcode); } ?> </div> <?php } public function render_categories_names() { $settings = $this->get_settings_for_display(); if ( ! $this->get_settings( 'show_category' ) ) { return; } $this->add_render_attribute('portfolio-category', 'class', 'bdt-gallery-item-tags', true); global $post; $separator = '<span class="bdt-gallery-item-tag-separator">, </span>'; $tags_array = []; $item_filters = get_the_terms( $post->ID, 'portfolio_filter' ); foreach ( $item_filters as $item_filter ) { $tags_array[] = '<span class="bdt-gallery-item-tag">' . $item_filter->slug . '</span>'; } ?> <div <?php echo $this->get_render_attribute_string( 'portfolio-category' ); ?>> <?php echo implode( $separator, $tags_array ); ?> </div> <?php } public function render_header($skin = 'default') { $settings = $this->get_settings_for_display(); $id = 'bdt-portfolio-list' . $this->get_id(); $this->add_render_attribute('portfolio-wrapper', 'class', 'bdt-portfolio-list-wrapper'); $this->add_render_attribute('portfolio', 'id', esc_attr($id) ); $this->add_render_attribute('portfolio', 'class', ['bdt-portfolio-list', 'bdt-ep-grid-filter-container', 'bdt-portfolio-list-skin-' . $skin]); $this->add_render_attribute('portfolio', 'data-bdt-grid', ''); $this->add_render_attribute('portfolio', 'class', ['bdt-grid', 'bdt-grid-medium']); if ( $settings['show_horizontal_layout'] ) { $this->add_render_attribute('portfolio', 'class', 'bdt-child-width-1-'. $settings['columns_mobile']); $this->add_render_attribute('portfolio', 'class', 'bdt-child-width-1-'. $settings['columns_tablet'] .'@s'); $this->add_render_attribute('portfolio', 'class', 'bdt-child-width-1-'. $settings['columns'] .'@m'); } else { $this->add_render_attribute('portfolio', 'class', 'bdt-child-width-1-1'); } ?> <div <?php echo $this->get_render_attribute_string( 'portfolio-wrapper' ); ?>> <div <?php echo $this->get_render_attribute_string( 'portfolio' ); ?>> <?php } public function render_footer() { ?> </div> </div> <?php } public function render_desc() { ?> <div class="bdt-portfolio-desc"> <?php $this->render_title(); $this->render_excerpt(); $this->render_categories_names(); ?> </div> <?php } public function render_post() { $settings = $this->get_settings_for_display(); global $post; $element_key = 'portfolio-item-' . $post->ID; $this->add_render_attribute('portfolio-item-inner', 'class', 'bdt-portfolio-inner', true); $this->add_render_attribute('portfolio-item', 'class', 'bdt-gallery-item bdt-transition-toggle', true); ?> <div <?php echo $this->get_render_attribute_string( $element_key ); ?>> <div <?php echo $this->get_render_attribute_string( 'portfolio-item' ); ?>> <div <?php echo $this->get_render_attribute_string( 'portfolio-item-inner' ); ?>> <div class="bdt-grid"> <div class="bdt-width-auto bdt-flex bdt-flex-middle"> <?php $this->render_thumbnail(); ?> </div> <div class="bdt-width-expand bdt-flex bdt-flex-middle"> <?php $this->render_desc(); ?> </div> </div> </div> </div> </div> <?php } }
[+]
..
[-] portfolio-list.php
[edit]