Wordpress - пользовательские виджеты Elementor - условные элементы управления

Я создаю свой первый элемент или виджет. Мне нужно создать 3 условных элемента управления: Выберите (настраиваемый) post_type -> выберите таксономию, принадлежащую соответствующему post_type -> выберите сообщения, принадлежащие соответствующей таксономии.

Как я могу создать эти элементы управления?

Это то, что я получил до сих пор, но проблема в том, что, когда я выбираю тип сообщения, в списке таксономий у меня есть все таксономии, а не только те, которые принадлежат выбранному post_type.

        $post_types = get_post_types([], 'objects');
        $options = [];
        foreach ( $post_types as $post_type ) {
            $options[$post_type->name] = $post_type->label;
        }
        $this->add_control(
            'post_types',
            [
                'label' => __( 'Choose a post type', 'cf-elementor-apm-widget' ),
                'type' => \Elementor\Controls_Manager::SELECT,
                'options' => $options,
                'classes' => 'post_types',
            ]
        );

        $taxonomies = get_taxonomies([], 'objects');

        $options = [];
        foreach ( $taxonomies as $taxonomy ) {
            $options[$taxonomy->name] = $taxonomy->label . " [{$taxonomy->name}]";
        }

        $this->add_control(
            'taxonomies',
            [
                'label' => __( 'Choose a taxonomy', 'cf-elementor-apm-widget' ),
                'type' => \Elementor\Controls_Manager::SELECT,
                'options' => $options,
                'classes' => 'taxonomy',
            ]
        );

person Zoli    schedule 01.06.2019    source источник
comment
как вы отрисовываете посты?   -  person ianhman    schedule 15.07.2020


Ответы (1)


Создавайте различные выборки таксономии для каждого типа сообщений. Скорее всего, он будет работать, если будет создан программно, поэтому вам не нужно их жестко кодировать. Затем показывать только выбранную конкретную таксономию, если значение выбора типа записи соответствует этому. Вы можете сделать это с помощью условий управления.

person Firsh - justifiedgrid.com    schedule 07.02.2020