Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /proc/self/root/proc/self/cwd/wp-content/plugins/bdthemes-element-pack/modules/faq/widgets/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/self/root/proc/self/cwd/wp-content/plugins/bdthemes-element-pack/modules/faq/widgets/faq.php
<?php

namespace ElementPack\Modules\Faq\Widgets;

use ElementPack\Base\Module_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Background;
use Elementor\Icons_Manager;

use ElementPack\Includes\Controls\GroupQuery\Group_Control_Query;
use ElementPack\Traits\Global_Widget_Controls;
use WP_Query;

if (!defined('ABSPATH')) exit; // Exit if accessed directly

class FAQ extends Module_Base {
    use Group_Control_Query;
    use Global_Widget_Controls;

    private $_query = null;

    public function get_name() {
        return 'bdt-faq';
    }

    public function get_title() {
        return BDTEP . esc_html__('FAQ', 'bdthemes-element-pack');
    }

    public function get_icon() {
        return 'bdt-wi-faq';
    }

    public function get_categories() {
        return ['element-pack'];
    }

    public function get_keywords() {
        return ['faq', 'accordion', 'tabs', 'toggle'];
    }

    public function get_style_depends() {
        if ($this->ep_is_edit_mode()) {
            return ['ep-styles'];
        } else {
            return ['ep-font', 'ep-faq'];
        }
    }

    public function get_script_depends() {
        if ($this->ep_is_edit_mode()) {
            return ['ep-scripts'];
        } else {
            return ['ep-faq'];
        }
    }

    public function get_custom_help_url() {
        return 'https://youtu.be/jGGdCuSjesY';
    }

    public function on_import($element) {
        if (is_plugin_active('bdthemes-faq/bdthemes-faq.php')) {
            if (!get_post_type_object($element['settings']['posts_post_type'])) {
                $element['settings']['posts_post_type'] = 'faq';
            }
        } else {
            if (!get_post_type_object($element['settings']['posts_post_type'])) {
                $element['settings']['posts_post_type'] = 'post';
            }
        }

        return $element;
    }

    public function get_query() {
        return $this->_query;
    }

    protected function register_controls() {
        $this->start_controls_section(
            'section_content_layout',
            [
                'label' => esc_html__('Layout', 'bdthemes-element-pack'),
                'tab'   => Controls_Manager::TAB_CONTENT,
            ]
        );

        $this->add_control(
            'multicolumns',
            [
                'label' => __('Multi Columns', 'bdthemes-element-pack') . BDTEP_NC,
                'type'  => Controls_Manager::SWITCHER,
            ]
        );

        $this->add_responsive_control(
            'item_spacing',
            [
                'label'     => __('Item Spacing', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item + .bdt-faq-item' => 'margin-top: {{SIZE}}{{UNIT}}',
                ],
            ]
        );

        $this->add_responsive_control(
            'item_column_gap',
            [
                'label'     => __('Column Gap', 'bdthemes-element-pack') . BDTEP_NC,
                'type'      => Controls_Manager::SLIDER,
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq.bdt-faq-multi-columns' => 'grid-column-gap: {{SIZE}}{{UNIT}}',
                ],
                'condition' => [
                    'multicolumns' => 'yes'
                ]
            ]
        );

        $this->add_control(
            'collapsible',
            [
                'label'     => __('Collapsible All Item', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SWITCHER,
                'default'   => 'yes',
                'separator' => 'before',
            ]
        );

        $this->add_control(
            'multiple',
            [
                'label' => __('Multiple Open', 'bdthemes-element-pack'),
                'type'  => Controls_Manager::SWITCHER,
            ]
        );

        $this->add_control(
            'icon',
            [
                'label'   => __('Show Icon', 'bdthemes-element-pack'),
                'type'    => Controls_Manager::SWITCHER,
                'default' => 'yes',
            ]
        );

        $this->add_control(
            'closed_icon',
            [
                'label'       => __('Icon', 'bdthemes-element-pack'),
                'type'        => Controls_Manager::ICONS,
                // 'default'          => [
                //     'value'   => 'far fa-question-circle',
                //     'library' => 'fa-regular',
                // ],
                'recommended' => [
                    'fa-solid'   => [
                        'question',
                        'question-circle',
                        'plus',
                        'plus-circle',
                        'plus-square',
                    ],
                    'fa-regular' => [
                        'question-circle',
                        'plus-square',
                        'arrow-alt-circle-right',
                        'caret-square-right',
                    ],
                ],
                'skin'        => 'inline',
                'label_block' => false,
                'condition'   => [
                    'icon' => 'yes',
                ],
            ]
        );

        $this->add_control(
            'opened_icon',
            [
                'label'       => __('Active Icon', 'bdthemes-element-pack'),
                'type'        => Controls_Manager::ICONS,
                // 'default'          => [
                //     'value'   => 'fas fa-check',
                //     'library' => 'fa-solid',
                // ],
                'recommended' => [
                    'fa-solid'   => [
                        'check',
                        'check-circle',
                        'check-double',
                        'check-square',
                        'calendar-check',
                        'clipboard-check',
                        'spell-check',
                        'user-check',
                    ],
                    'fa-regular' => [
                        'check-circle',
                        'check-square',
                        'calendar-check',
                        'arrow-alt-circle-down',
                        'caret-square-down',
                    ],
                ],
                'skin'        => 'inline',
                'label_block' => false,
                'condition'   => [
                    'icon' => 'yes',
                ],
            ]
        );

        $this->add_control(
            'show_filter_bar',
            [
                'label'     => esc_html__('Filter Bar', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SWITCHER,
                'separator' => 'before',
            ]
        );
        $post_types = $this->getGroupControlQueryPostTypes();

        foreach ($post_types as $key => $post_type) {
            $taxonomies = $this->get_taxonomies($key);
            if (!$taxonomies[$key]) {
                continue;
            }
            $this->add_control(
                'taxonomy_' . $key,
                [
                    'label'     => __('Taxonomies', 'bdthemes-element-pack'),
                    'type'      => Controls_Manager::SELECT,
                    'options'   => $taxonomies[$key],
                    'default'   => key($taxonomies[$key]),
                    'condition' => [
                        'posts_source' => $key,
                        'show_filter_bar' => 'yes'
                    ],
                ]
            );
        }
        $this->add_control(
            'active_hash',
            [
                'label'     => esc_html__('Hash Location', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SWITCHER,
                'default'   => 'no',
                'condition' => [
                    'show_filter_bar' => 'yes',
                ],
            ]
        );

        $this->add_control(
            'hash_top_offset',
            [
                'label'      => esc_html__('Top Offset ', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::SLIDER,
                'size_units' => ['px', ''],
                'range'      => [
                    'px' => [
                        'min'  => 1,
                        'max'  => 1000,
                        'step' => 5,
                    ],

                ],
                'default'    => [
                    'unit' => 'px',
                    'size' => 70,
                ],
                'condition'  => [
                    'active_hash'     => 'yes',
                    'show_filter_bar' => 'yes',
                ],
            ]
        );

        $this->add_control(
            'hash_scrollspy_time',
            [
                'label'      => esc_html__('Scrollspy Time', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::SLIDER,
                'size_units' => ['ms', ''],
                'range'      => [
                    'px' => [
                        'min'  => 500,
                        'max'  => 5000,
                        'step' => 1000,
                    ],
                ],
                'default'    => [
                    'unit' => 'px',
                    'size' => 1000,
                ],
                'condition'  => [
                    'active_hash'     => 'yes',
                    'show_filter_bar' => 'yes',
                ],

            ]
        );


        $this->add_control(
            'excerpt_length',
            [
                'label'       => __('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'     => 50,
                'separator'   => 'before',
            ]
        );

        $this->add_control(
            'strip_shortcode',
            [
                'label'   => esc_html__('Strip Shortcode', 'bdthemes-element-pack'),
                'type'    => Controls_Manager::SWITCHER,
                'default' => 'yes',
            ]
        );


        $this->add_control(
            'show_read_more',
            [
                'label'   => __('Read More', 'bdthemes-element-pack'),
                'type'    => Controls_Manager::SWITCHER,
                'default' => 'yes',
            ]
        );

        $this->add_control(
            'active_item',
            [
                'label' => __('Active Item No', 'bdthemes-element-pack'),
                'type'  => Controls_Manager::NUMBER,
                'min'   => 1,
                'max'   => 20,
            ]
        );

        $this->add_control(
            'schema_activity',
            [
                'label'       => __('Schema Active', 'bdthemes-element-pack'),
                'description' => __('Warning: If you have multiple FAQ widgets on the same page so don\'t activate schema for both FAQ widgets so you will get errors on the google index. Activate the only one which you want to show on google search.', 'bdthemes-element-pack'),
                'type'        => Controls_Manager::SWITCHER,
                'default'     => 'yes',
                'separator'   => 'before',
            ]
        );

        $this->end_controls_section();
        //New Query Builder Settings
        $this->start_controls_section(
            'section_post_query_builder',
            [
                'label' => __('Query', 'bdthemes-element-pack') . BDTEP_NC,
                'tab'   => Controls_Manager::TAB_CONTENT,
            ]
        );
        $this->register_query_builder_controls();
        if (is_plugin_active('bdthemes-faq/bdthemes-faq.php')) {
            $this->update_control(
                'posts_source',
                [
                    'label'   => __('Source', 'bdthemes-element-pack'),
                    'type'    => Controls_Manager::SELECT,
                    'options' => $this->getGroupControlQueryPostTypes(),
                    'default' => 'faq',
                ]
            );
        }

        $this->end_controls_section();


        $this->start_controls_section(
            'section_content_button',
            [
                'label'     => esc_html__('Read More Button', 'bdthemes-element-pack'),
                'condition' => [
                    'show_read_more' => 'yes',
                ],
            ]
        );

        $this->add_control(
            'more_button_button_text',
            [
                'label'       => esc_html__('Text', 'bdthemes-element-pack'),
                'type'        => Controls_Manager::TEXT,
                'placeholder' => esc_html__('Read More', 'bdthemes-element-pack'),
                'default'     => esc_html__('Read More', 'bdthemes-element-pack'),
                'label_block' => true,
            ]
        );

        $this->add_control(
            'faq_more_button_icon',
            [
                'label'            => esc_html__('Icon', 'bdthemes-element-pack'),
                'type'             => Controls_Manager::ICONS,
                'fa4compatibility' => 'more_button_icon',
            ]
        );

        $this->add_control(
            'more_button_icon_align',
            [
                'label'     => esc_html__('Icon Position', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SELECT,
                'default'   => 'right',
                'options'   => [
                    'left'  => esc_html__('Before', 'bdthemes-element-pack'),
                    'right' => esc_html__('After', 'bdthemes-element-pack'),
                ],
                'condition' => [
                    'faq_more_button_icon[value]!' => '',
                ],
            ]
        );

        $this->add_responsive_control(
            'more_button_icon_indent',
            [
                'label'     => esc_html__('Icon Spacing', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'default'   => [
                    'size' => 8,
                ],
                'range'     => [
                    'px' => [
                        'max' => 50,
                    ],
                ],
                'condition' => [
                    'faq_more_button_icon[value]!' => '',
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-button-icon-align-right' => is_rtl() ? 'margin-right: {{SIZE}}{{UNIT}};' : 'margin-left: {{SIZE}}{{UNIT}};',
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-button-icon-align-left'  => is_rtl() ? 'margin-left: {{SIZE}}{{UNIT}};' : 'margin-right: {{SIZE}}{{UNIT}};',
                ],
            ]
        );

        $this->end_controls_section();

        $this->start_controls_section(
            'section_toggle_style_title',
            [
                'label' => __('Title', 'bdthemes-element-pack'),
                'tab'   => Controls_Manager::TAB_STYLE,
            ]
        );

        $this->add_responsive_control(
            'align',
            [
                'label'       => __('Alignment', 'bdthemes-element-pack'),
                'type'        => Controls_Manager::CHOOSE,
                'options'     => [
                    'left'   => [
                        'title' => __('Left', 'bdthemes-element-pack'),
                        'icon'  => 'eicon-text-align-left',
                    ],
                    'center' => [
                        'title' => __('Center', 'bdthemes-element-pack'),
                        'icon'  => 'eicon-text-align-center',
                    ],
                    'right'  => [
                        'title' => __('Right', 'bdthemes-element-pack'),
                        'icon'  => 'eicon-text-align-right',
                    ],
                ],
                'default'     => 'left',
                'toggle'      => false,
                'label_block' => false,
                'render_type' => 'template',
                'selectors'   => [
                    '{{WRAPPER}} .bdt-faq-title-text' => 'justify-content: {{VALUE}};',
                ],
            ]
        );

        $this->start_controls_tabs('tabs_title_style');

        $this->start_controls_tab(
            'tab_title_normal',
            [
                'label' => __('Normal', 'bdthemes-element-pack'),
            ]
        );

        $this->add_control(
            'glassmorphism_effect',
            [
                'label'       => esc_html__('Glassmorphism', 'bdthemes-element-pack') . BDTEP_NC,
                'type'        => Controls_Manager::SWITCHER,
                'description' => sprintf(__('This feature will not work in the Firefox browser untill you enable browser compatibility so please %1s look here %2s', 'bdthemes-element-pack'), '<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility" target="_blank">', '</a>'),

            ]
        );

        $this->add_control(
            'glassmorphism_blur_level',
            [
                'label'     => __('Blur Level', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'range'     => [
                    'px' => [
                        'min'  => 0,
                        'step' => 1,
                        'max'  => 50,
                    ]
                ],
                'default'   => [
                    'size' => 5
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-title' => 'backdrop-filter: blur({{SIZE}}px); -webkit-backdrop-filter: blur({{SIZE}}px);'
                ],
                'condition' => [
                    'glassmorphism_effect' => 'yes',
                ]
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'title_background',
                'types'    => ['classic', 'gradient'],
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-accordion-title',
            ]
        );

        $this->add_control(
            'title_color',
            [
                'label'     => __('Text Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-title' => 'color: {{VALUE}};',
                ],
                'separator' => 'before',
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name'        => 'title_border',
                'placeholder' => '1px',
                'default'     => '1px',
                'selector'    => '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title',
            ]
        );

        $this->add_responsive_control(
            'title_radius',
            [
                'label'      => __('Border Radius', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;',
                ],
            ]
        );

        $this->add_responsive_control(
            'title_padding',
            [
                'label'      => __('Padding', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', 'em', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_responsive_control(
            'title_margin',
            [
                'label'      => __('Margin', 'bdthemes-element-pack') . BDTEP_NC,
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', 'em', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-title-text' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name'     => 'title_shadow',
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title',
            ]
        );

        $this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name'     => 'title_typography',
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-accordion-title',
            ]
        );

        $this->end_controls_tab();

        $this->start_controls_tab(
            'tab_title_active',
            [
                'label' => __('Active', 'bdthemes-element-pack'),
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'active_title_background',
                'types'    => ['classic', 'gradient'],
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-title',
            ]
        );

        $this->add_control(
            'active_title_color',
            [
                'label'     => __('Text Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-title' => 'color: {{VALUE}};',
                ],
                'separator' => 'before',
            ]
        );

        $this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name'     => 'active_title_shadow',
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-title',
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name'        => 'active_title_border',
                'placeholder' => '1px',
                'default'     => '1px',
                'selector'    => '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-title',
            ]
        );

        $this->add_responsive_control(
            'active_title_radius',
            [
                'label'      => __('Border Radius', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-title' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;',
                ],
            ]
        );

        $this->end_controls_tab();

        $this->start_controls_tab(
            'tab_title_hover',
            [
                'label' => __('Hover', 'bdthemes-element-pack'),
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'hover_title_background',
                'types'    => ['classic', 'gradient'],
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title:hover',
            ]
        );

        $this->add_control(
            'hover_title_color',
            [
                'label'     => __('Text Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title:hover' => 'color: {{VALUE}};',
                ],
                'separator' => 'before',
            ]
        );

        $this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name'     => 'hover_title_shadow',
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title:hover',
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name'        => 'hover_title_border',
                'placeholder' => '1px',
                'default'     => '1px',
                'selector'    => '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title:hover',
            ]
        );

        $this->add_responsive_control(
            'hover_title_radius',
            [
                'label'      => __('Border Radius', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item .bdt-accordion-title:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;',
                ],
            ]
        );

        $this->end_controls_tab();

        $this->end_controls_tabs();

        $this->end_controls_section();

        $this->start_controls_section(
            'section_toggle_style_icon',
            [
                'label' => __('Icon', 'bdthemes-element-pack'),
                'tab'   => Controls_Manager::TAB_STYLE,
            ]
        );

        $this->add_control(
            'icon_align',
            [
                'label'       => __('Alignment', 'bdthemes-element-pack') . BDTEP_NC,
                'type'        => Controls_Manager::CHOOSE,
                'options'     => [
                    'left'  => [
                        'title' => __('Start', 'bdthemes-element-pack'),
                        'icon'  => 'eicon-h-align-left',
                    ],
                    'right' => [
                        'title' => __('End', 'bdthemes-element-pack'),
                        'icon'  => 'eicon-h-align-right',
                    ],
                ],
                'default'     => is_rtl() ? 'right' : 'left',
                'toggle'      => false,
                'label_block' => false,
            ]
        );

        $this->start_controls_tabs('tabs_icon_style');

        $this->start_controls_tab(
            'tab_icon_normal',
            [
                'label' => __('Normal', 'bdthemes-element-pack'),
            ]
        );

        $this->add_control(
            'icon_color',
            [
                'label'     => __('Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-title .bdt-accordion-icon'     => 'color: {{VALUE}};',
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-title .bdt-accordion-icon svg' => 'fill: {{VALUE}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'icon_background_color',
                'selector' => '{{WRAPPER}} .bdt-accordion-icon'
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name'     => 'icon_border',
                'selector' => '{{WRAPPER}} .bdt-accordion-icon',
            ]
        );

        $this->add_responsive_control(
            'icon_border_radius',
            [
                'label'      => esc_html__('Border Radius', 'bdthemes-element-pack') . BDTEP_NC,
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_responsive_control(
            'icon_padding',
            [
                'label'      => esc_html__('Padding', 'bdthemes-element-pack') . BDTEP_NC,
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', 'em', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion-icon' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_responsive_control(
            'icon_space',
            [
                'label'     => __('Spacing', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'default'   => [
                    'size' => 10
                ],
                'range'     => [
                    'px' => [
                        'min' => 0,
                        'max' => 100,
                    ],
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion-icon.bdt-flex-align-left'  => is_rtl() ? 'margin-left: {{SIZE}}{{UNIT}};' : 'margin-right: {{SIZE}}{{UNIT}};',
                    '{{WRAPPER}} .bdt-accordion-icon.bdt-flex-align-right' => is_rtl() ? 'margin-right: {{SIZE}}{{UNIT}};' : 'margin-left: {{SIZE}}{{UNIT}};',
                ],
            ]
        );

        $this->add_responsive_control(
            'icon_size',
            [
                'label'     => __('Icon Size', 'bdthemes-element-pack') . BDTEP_NC,
                'type'      => Controls_Manager::SLIDER,
                'range'     => [
                    'px' => [
                        'min' => 10,
                        'max' => 100,
                    ],
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion-title .bdt-accordion-icon' => 'font-size: {{SIZE}}{{UNIT}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name'     => 'icon_box_shadow',
                'selector' => '{{WRAPPER}} .bdt-accordion-icon',
            ]
        );

        $this->end_controls_tab();

        $this->start_controls_tab(
            'tab_icon_active',
            [
                'label' => __('Active', 'bdthemes-element-pack'),
            ]
        );

        $this->add_control(
            'icon_active_color',
            [
                'label'     => __('Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-icon'     => 'color: {{VALUE}};',
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item.bdt-open .bdt-accordion-icon svg' => 'fill: {{VALUE}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'icon_active_background_color',
                'selector' => '{{WRAPPER}} .bdt-faq-item.bdt-open .bdt-accordion-icon'
            ]
        );

        $this->add_control(
            'icon_active_border_color',
            [
                'label'     => esc_html__('Border Color', 'bdthemes-element-pack') . BDTEP_NC,
                'type'      => Controls_Manager::COLOR,
                'condition' => [
                    'icon_border_border!' => '',
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq-item.bdt-open .bdt-accordion-icon' => 'border-color: {{VALUE}};',
                ],
            ]
        );

        $this->end_controls_tab();

        $this->start_controls_tab(
            'tab_icon_hover',
            [
                'label' => __('Hover', 'bdthemes-element-pack'),
            ]
        );

        $this->add_control(
            'icon_hover_color',
            [
                'label'     => __('Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item:hover .bdt-accordion-icon'     => 'color: {{VALUE}};',
                    '{{WRAPPER}} .bdt-accordion .bdt-faq-item:hover .bdt-accordion-icon svg' => 'fill: {{VALUE}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'icon_hover_background_color',
                'selector' => '{{WRAPPER}} .bdt-faq-item:hover .bdt-accordion-icon'
            ]
        );

        $this->add_control(
            'icon_hover_border_color',
            [
                'label'     => esc_html__('Border Color', 'bdthemes-element-pack') . BDTEP_NC,
                'type'      => Controls_Manager::COLOR,
                'condition' => [
                    'icon_border_border!' => '',
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq-item:hover .bdt-accordion-icon' => 'border-color: {{VALUE}};',
                ],
            ]
        );

        $this->end_controls_tab();

        $this->end_controls_tabs();

        $this->end_controls_section();

        $this->start_controls_section(
            'section_toggle_style_content',
            [
                'label' => __('Content', 'bdthemes-element-pack'),
                'tab'   => Controls_Manager::TAB_STYLE,
            ]
        );

        $this->add_control(
            'content_glassmorphism_effect',
            [
                'label'       => esc_html__('Glassmorphism', 'bdthemes-element-pack') . BDTEP_NC,
                'type'        => Controls_Manager::SWITCHER,
                'description' => sprintf(__('This feature will not work in the Firefox browser untill you enable browser compatibility so please %1s look here %2s', 'bdthemes-element-pack'), '<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility" target="_blank">', '</a>'),

            ]
        );

        $this->add_control(
            'content_glassmorphism_blur_level',
            [
                'label'     => __('Blur Level', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'range'     => [
                    'px' => [
                        'min'  => 0,
                        'step' => 1,
                        'max'  => 50,
                    ]
                ],
                'default'   => [
                    'size' => 5
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-content' => 'backdrop-filter: blur({{SIZE}}px); -webkit-backdrop-filter: blur({{SIZE}}px);'
                ],
                'condition' => [
                    'content_glassmorphism_effect' => 'yes',
                ]
            ]
        );

        $this->add_group_control(
            Group_Control_Background::get_type(),
            [
                'name'     => 'content_background_color',
                'types'    => ['classic', 'gradient'],
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-accordion-content',
            ]
        );

        $this->add_control(
            'content_color',
            [
                'label'     => __('Text Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-content' => 'color: {{VALUE}};',
                ],
                'separator' => 'before',
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name'        => 'content_border',
                'placeholder' => '1px',
                'default'     => '1px',
                'selector'    => '{{WRAPPER}} .bdt-accordion .bdt-accordion-content',
            ]
        );

        $this->add_responsive_control(
            'content_radius',
            [
                'label'      => __('Border Radius', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; overflow: hidden;',
                ],
            ]
        );

        $this->add_responsive_control(
            'content_padding',
            [
                'label'      => __('Padding', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', 'em', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_responsive_control(
            'content_spacing',
            [
                'label'     => __('Spacing', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'range'     => [
                    'px' => [
                        'min' => 0,
                        'max' => 100,
                    ],
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-accordion .bdt-accordion-content' => 'margin-top: {{SIZE}}{{UNIT}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name'     => 'content_shadow',
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-accordion-content',
            ]
        );

        $this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name'     => 'content_typography',
                'selector' => '{{WRAPPER}} .bdt-accordion .bdt-accordion-content',
            ]
        );

        $this->end_controls_section();

        $this->register_style_controls_filter();

        $this->start_controls_section(
            'section_style_more_button',
            [
                'label'     => esc_html__('Read More Button', 'bdthemes-element-pack'),
                'tab'       => Controls_Manager::TAB_STYLE,
                'condition' => [
                    'show_read_more' => 'yes',
                ],
            ]
        );

        $this->add_responsive_control(
            'more_button_spacing',
            [
                'label'     => esc_html__('Spacing', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::SLIDER,
                'range'     => [
                    'px' => [
                        'max' => 35,
                    ],
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button' => 'margin-top: {{SIZE}}{{UNIT}};',
                ],
            ]
        );

        $this->start_controls_tabs('tabs_more_button_style');

        $this->start_controls_tab(
            'tab_more_button_normal',
            [
                'label' => esc_html__('Normal', 'bdthemes-element-pack'),
            ]
        );

        $this->add_control(
            'more_button_text_color',
            [
                'label'     => esc_html__('Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button'     => 'color: {{VALUE}};',
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button svg' => 'fill: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'more_button_background_color',
            [
                'label'     => esc_html__('Background Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button' => 'background-color: {{VALUE}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Border::get_type(),
            [
                'name'        => 'more_button_border',
                'label'       => esc_html__('Border', 'bdthemes-element-pack'),
                'placeholder' => '1px',
                'default'     => '1px',
                'selector'    => '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button',
                'separator'   => 'before',
            ]
        );

        $this->add_responsive_control(
            'more_button_border_radius',
            [
                'label'      => esc_html__('Border Radius', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_responsive_control(
            'more_button_padding',
            [
                'label'      => esc_html__('Padding', 'bdthemes-element-pack'),
                'type'       => Controls_Manager::DIMENSIONS,
                'size_units' => ['px', 'em', '%'],
                'selectors'  => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
                ],
            ]
        );

        $this->add_group_control(
            Group_Control_Box_Shadow::get_type(),
            [
                'name'     => 'more_button_shadow',
                'selector' => '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button',
            ]
        );

        $this->add_group_control(
            Group_Control_Typography::get_type(),
            [
                'name'     => 'more_button_typography',
                'label'    => esc_html__('Typography', 'bdthemes-element-pack'),
                'selector' => '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button',
            ]
        );

        $this->end_controls_tab();

        $this->start_controls_tab(
            'tab_more_button_hover',
            [
                'label' => esc_html__('Hover', 'bdthemes-element-pack'),
            ]
        );

        $this->add_control(
            'more_button_hover_color',
            [
                'label'     => esc_html__('Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button:hover'     => 'color: {{VALUE}};',
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button:hover svg' => 'fill: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'more_button_background_hover_color',
            [
                'label'     => esc_html__('Background Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button:hover' => 'background-color: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'more_button_hover_border_color',
            [
                'label'     => esc_html__('Border Color', 'bdthemes-element-pack'),
                'type'      => Controls_Manager::COLOR,
                'condition' => [
                    'more_button_border_border!' => '',
                ],
                'selectors' => [
                    '{{WRAPPER}} .bdt-faq .bdt-faq-item .bdt-faq-button:hover' => 'border-color: {{VALUE}};',
                ],
            ]
        );

        $this->add_control(
            'more_button_hover_animation',
            [
                'label' => esc_html__('Animation', 'bdthemes-element-pack'),
                'type'  => Controls_Manager::HOVER_ANIMATION,
            ]
        );

        $this->end_controls_tab();

        $this->end_controls_tabs();

        $this->end_controls_section();
    }

    public function get_taxonomies($post_type = '') {
        $_taxonomies = [];
        if ($post_type) {
            $taxonomies = get_taxonomies(['public' => true, 'object_type' => [$post_type]], 'object');
            $tax = array_diff_key(wp_list_pluck($taxonomies, 'label', 'name'), []);
            $_taxonomies[$post_type] = count($tax) !== 0 ? $tax : '';
        }
        return $_taxonomies;
    }


    /**
     * Get post query builder arguments
     */
    public function query_posts($posts_per_page) {
        $settings = $this->get_settings();
        $args = [];
        if ($posts_per_page) {
            $args['posts_per_page'] = $posts_per_page;
        }

        $default = $this->getGroupControlQueryArgs();
        $args = array_merge($default, $args);

        $this->_query = new \WP_Query($args);
    }

    public function filter_menu_terms() {
        $settings = $this->get_settings_for_display();
        if (isset($settings['taxonomy_' . $settings['posts_source']])) :
            $taxonomy = $settings['taxonomy_' . $settings['posts_source']];
            $categories = get_the_terms(get_the_ID(), $taxonomy);
            $_categories = [];
            if ($categories) {
                foreach ($categories as $category) {
                    $_categories[$category->slug] = strtolower($category->slug);
                }
            }
            return implode(' ', $_categories);
        endif;
    }
    protected function filter_menu_categories() {
        $settings = $this->get_settings_for_display();
        $include_Categories = $settings['posts_include_term_ids'];
        $exclude_Categories = $settings['posts_exclude_term_ids'];
        $post_options = [];
        if (isset($settings['taxonomy_' . $settings['posts_source']])) {
            $taxonomy = $settings['taxonomy_' . $settings['posts_source']];
            $params = [
                'taxonomy' => $taxonomy,
                'hide_empty' => true,
                'include' => $include_Categories,
                'exclude' => $exclude_Categories,
            ];
            $post_categories = get_terms($params);
            if (is_wp_error($post_categories)) {
                return $post_options;
            }
            if (false !== $post_categories and is_array($post_categories)) {
                foreach ($post_categories as $category) {
                    $post_options[$category->slug] = $category->name;
                }
            }
        }

        return $post_options;
    }

    public function render_title() {
        $settings = $this->get_settings_for_display();
        $faq_icon = get_post_meta(get_the_ID(), 'bdthemes_faq_icon', true);
        $faq_icon = (!empty($faq_icon)) ? $faq_icon : 'ep-icon-question';

        // if ('left' == $settings['align']) {
        // 	$this->add_render_attribute('faq_title', 'class', 'bdt-accordion-title bdt-faq-align-left', true);
        // } elseif ('right' == $settings['align']) {
        // 	$this->add_render_attribute('faq_title', 'class', 'bdt-accordion-title bdt-faq-align-right', true);
        // } elseif ('center' == $settings['align']) {
        // 	$this->add_render_attribute('faq_title', 'class', 'bdt-accordion-title bdt-faq-align-center', true);
        // } else {
        // }
        $this->add_render_attribute('faq_title', 'class', 'bdt-accordion-title', true);

        $this->add_render_attribute('faq_title', 'itemprop', 'name', true);

?>
        <div role="main" <?php echo $this->get_render_attribute_string('faq_title'); ?>>

            <?php if ($settings['icon']) : ?>
                <span class="bdt-accordion-icon bdt-flex-align-<?php echo esc_attr($settings['icon_align']); ?>" aria-hidden="true">
                    <?php if ($settings['closed_icon']['value']) : ?>
                        <span class="bdt-accordion-icon-closed">
                            <?php Icons_Manager::render_icon($settings['closed_icon'], ['aria-hidden' => 'true']); ?>
                        </span>
                    <?php else : ?>
                        <i class="bdt-accordion-icon-closed <?php echo esc_attr($faq_icon); ?>"></i>
                    <?php endif; ?>

                    <?php if ($settings['opened_icon']['value']) : ?>
                        <span class="bdt-accordion-icon-opened">
                            <?php Icons_Manager::render_icon($settings['opened_icon'], ['aria-hidden' => 'true']); ?>
                        </span>
                    <?php else : ?>
                        <i class="bdt-accordion-icon-opened ep-icon-checkmark"></i>
                    <?php endif; ?>
                </span>
            <?php endif; ?>

            <span class="bdt-faq-title-text bdt-flex bdt-flex-middle bdt-width">
                <?php echo esc_html(get_the_title()); ?>
            </span>

        </div>
    <?php
    }

    public function render_excerpt() {
        $settings = $this->get_settings_for_display();

        $strip_shortcode = $this->get_settings_for_display('strip_shortcode');

    ?>
        <div class="bdt-faq-excerpt" <?php if ($settings['schema_activity'] == 'yes') : ?> itemprop="text" <?php endif; ?>>
            <?php
            if (has_excerpt()) {
                the_excerpt();
            } else {
                echo element_pack_custom_excerpt($this->get_settings_for_display('excerpt_length'), $strip_shortcode);
            }
            ?>
        </div>
        <?php

    }

    public function render_more_button_button($post) {
        $settings = $this->get_settings_for_display();

        $animation = ($settings['more_button_hover_animation']) ? ' elementor-animation-' . $settings['more_button_hover_animation'] : '';

        if (!isset($settings['more_button_icon']) && !Icons_Manager::is_migration_allowed()) {
            // add old default
            $settings['more_button_icon'] = 'fas fa-arrow-right';
        }

        $migrated = isset($settings['__fa4_migrated']['faq_more_button_icon']);
        $is_new   = empty($settings['more_button_icon']) && Icons_Manager::is_migration_allowed();


        if ('yes' == $settings['show_read_more']) : ?>
            <div class="bdt-clearfix"></div>
            <a href="<?php echo esc_url(get_permalink($post->ID)); ?>" class="bdt-faq-button<?php echo esc_attr($animation); ?>"><?php echo esc_html($settings['more_button_button_text']); ?>
                <?php if ($settings['faq_more_button_icon']['value']) : ?>
                    <span class="bdt-button-icon-align-<?php echo esc_attr($settings['more_button_icon_align']); ?>">
                        <?php if ($is_new || $migrated) :
                            Icons_Manager::render_icon($settings['faq_more_button_icon'], ['aria-hidden' => 'true', 'class' => 'fa-fw']);
                        else : ?>
                            <i class="<?php echo esc_attr($settings['more_button_icon']); ?>" aria-hidden="true"></i>
                        <?php endif; ?>

                    </span>
                <?php endif; ?>

            </a>
        <?php endif;
    }



    public function render_filter_menu() {
        $settings  = $this->get_settings_for_display();
        $faq_categories = $this->filter_menu_categories();

        $this->add_render_attribute(
            [
                'bdt-faq-hash-data' => [
                    'data-hash-settings' => [
                        wp_json_encode(
                            array_filter([
                                "id"                => 'bdt-faq-' . $this->get_id(),
                                'activeHash'        => isset($settings['active_hash']) ? $settings['active_hash'] : 'no',
                                'hashTopOffset'     => isset($settings['hash_top_offset']) ? $settings['hash_top_offset']['size'] : 70,
                                'hashScrollspyTime' => isset($settings['hash_scrollspy_time']) ? $settings['hash_scrollspy_time']['size'] : 1000,
                            ])
                        ),
                    ],
                ],
            ]
        );
        ?>

        <div class="bdt-ep-grid-filters-wrapper" id="<?php echo 'bdt-faq-' . $this->get_id(); ?>" <?php echo $this->get_render_attribute_string('bdt-faq-hash-data'); ?>>
            <button class="bdt-button bdt-button-default bdt-hidden@m" type="button"><?php esc_html_e('Filter', 'bdthemes-element-pack'); ?></button>
            <div data-bdt-dropdown="mode: click;" class="bdt-dropdown bdt-margin-remove-top bdt-margin-remove-bottom bdt-hidden@m">
                <ul class="bdt-nav bdt-dropdown-nav">
                    <li class="bdt-ep-grid-filter bdt-active" data-bdt-filter-control>
                        <a href="#"><?php esc_html_e('All', 'bdthemes-element-pack'); ?></a>
                    </li>
                    <?php foreach ($faq_categories as $key => $category) :
                        printf('<li class="bdt-ep-grid-filter" data-bdt-filter-control="[data-filter*=\'%1$s\']"><a href="#">%2$s</a></li>', $key, $category);
                    endforeach; ?>


                </ul>
            </div>
            <ul class="bdt-ep-grid-filters bdt-visible@m" data-bdt-margin>
                <li class="bdt-ep-grid-filter bdt-active" data-bdt-filter-control>
                    <a href="#"><?php esc_html_e('All', 'bdthemes-element-pack'); ?></a>
                </li>

                <?php foreach ($faq_categories as $key => $category) :
                    printf('<li class="bdt-ep-grid-filter" data-bdt-filter-control="[data-filter*=\'%1$s\']"><a href="#">%2$s</a></li>', $key, $category);
                endforeach; ?>
            </ul>
        </div>
    <?php
    }

    public function render_header($settings, $id) {

        $this->add_render_attribute(
            [
                'bdt-faq-settings' => [
                    'id'                 => $id,
                    'class'              => 'bdt-accordion',
                    'data-bdt-accordion' => [
                        wp_json_encode([
                            "targets"      => "> div > .bdt-faq-item",
                            "collapsible" => $settings["collapsible"] ? true : false,
                            "multiple"    => $settings["multiple"] ? true : false,
                            "transition"  => "ease-in-out",
                            "active"      => ("" !== $settings["active_item"]) ? $settings["active_item"] - 1 : false,
                        ]),
                    ],
                ],
            ]
        );

        $this->add_render_attribute(
            [
                'bdt-faq-settings' => [
                    'class' => ('yes' != $settings["multicolumns"]) ? 'bdt-faq' : 'bdt-faq bdt-faq-multi-columns',
                ],
            ]
        );

        $this->add_render_attribute('faq-wrapper', 'class', 'bdt-faq-wrapper');
        if ($settings['show_filter_bar']) {
            $this->add_render_attribute('faq-wrapper', 'data-bdt-filter', 'target: #bdt-accordion-' . $this->get_id() . ' > div');
        }
        if ($settings['multicolumns']) {
            $this->add_render_attribute('faq-multicolumns', 'data-bdt-filter', 'target: .bdt-multicolumns-' . $this->get_id());
        }
    ?>
        <div <?php $this->print_render_attribute_string('faq-multicolumns') ?>>
            <div <?php echo $this->get_render_attribute_string('faq-wrapper'); ?>>
                <?php if ($settings['show_filter_bar']) {
                    $this->render_filter_menu();
                } ?>
                <div <?php echo $this->get_render_attribute_string('bdt-faq-settings'); ?> itemscope <?php if ($settings['schema_activity'] == 'yes') : ?> itemtype="https://schema.org/FAQPage" <?php endif; ?>>
                    <?php if ('yes' != $settings["multicolumns"]) { ?>
                        <div><?php
                            }
                        }
                        public function render_footer() { ?>
                        </div>
                </div>
            </div>
        </div>
    <?php
                        }

                        public function render_post($settings) {
                            $settings = $this->get_settings_for_display();
                            global $post;
                            $element_key = 'faq-item-' . $post->ID;
                            $this->add_render_attribute($element_key, 'class', 'bdt-faq-item');

                            if ($settings['schema_activity'] == 'yes') {
                                $this->add_render_attribute($element_key, 'itemscope');
                                $this->add_render_attribute($element_key, 'itemprop', 'mainEntity');
                                $this->add_render_attribute($element_key, 'itemtype', 'https://schema.org/Question');
                            }
                            if ($settings['show_filter_bar']) {
                                $this->add_render_attribute($element_key, 'data-filter', $this->filter_menu_terms(), true);
                            }
                            if ('left' == $settings['align']) {
                                $this->add_render_attribute('faq_content', 'class', 'bdt-accordion-content bdt-faq-align-left', true);
                            } elseif ('right' == $settings['align']) {
                                $this->add_render_attribute('faq_content', 'class', 'bdt-accordion-content bdt-faq-align-right', true);
                            } elseif ('center' == $settings['align']) {
                                $this->add_render_attribute('faq_content', 'class', 'bdt-accordion-content bdt-faq-align-center', true);
                            } else {
                                $this->add_render_attribute('faq_content', 'class', 'bdt-accordion-content', true);
                            }
                            if ($settings['schema_activity'] == 'yes') {
                                $this->add_render_attribute('faq_content', 'itemscope');
                                $this->add_render_attribute('faq_content', 'itemprop', 'acceptedAnswer', true);
                                $this->add_render_attribute('faq_content', 'itemtype', 'https://schema.org/Answer', true);
                            } ?>

        <div <?php echo $this->get_render_attribute_string($element_key); ?>>
            <?php $this->render_title(); ?>
            <div <?php echo $this->get_render_attribute_string('faq_content'); ?>>
                <?php
                            $this->render_excerpt();
                            $this->render_more_button_button($post);
                ?>
            </div>
        </div>
<?php
                        }

                        protected function render() {
                            /**
                             * !TODO
                             * post meta aded by talib if you need to use image in faq, use it
                             * $image_id = get_post_meta($post->ID, 'bdt_faq_image_id', true);
                             * $image = wp_get_attachment_image($image_id, 'large');
                             */
                            $settings = $this->get_settings_for_display();
                            $id       = 'bdt-accordion-' . $this->get_id();
                            $this->query_posts($settings['posts_per_page']);
                            $wp_query = $this->get_query();
                            if (!$wp_query->found_posts) {
                                return;
                            }
                            $this->render_header($settings, $id);

                            $total_item = $settings['posts_per_page'];
                            $half_item  = ceil($settings['posts_per_page'] / 2);
                            $count      = 0;

                            $this->add_render_attribute('accordion-settings', 'class', 'bdt-faq-column');

                            while ($wp_query->have_posts()) {
                                $wp_query->the_post();

                                if ('yes' != $settings["multicolumns"]) {
                                    $this->render_post($settings);
                                } else {
                                    if ($count == 0) {
                                        echo '<div ' . $this->get_render_attribute_string('accordion-settings') . '>';
                                        $this->render_post($settings);
                                    } elseif ($count < $half_item) {
                                        $this->render_post($settings);
                                    } elseif ($count == $half_item) {
                                        printf('</div><div class="%s">', 'bdt-faq-column bdt-multicolumns-' . $this->get_id());
                                        $this->render_post($settings);
                                    } elseif ($count > $half_item) {
                                        $this->render_post($settings);
                                    } elseif ($count == $total_item) {
                                        echo '</div>';
                                    }

                                    $count++;
                                }
                            }

                            $this->render_footer();

                            wp_reset_postdata();
                        }
                    }

Spamworldpro Mini