Вывод подрубрики через шорткод Wordpress

60
26 февраля 2022, 19:40

Помогите пожалуйста Нужно вывести подрубрики на страницу основной рубрики которая сделана через Elementor. Можно ли вывести как то через шорткод или есть другие варианты? помогите пжлст оформить правильно вывод

<?php
        $args = array(
        'orderby' => 'name',
        'child_of' => '124',
        'style' => 'none',
        'separator' => '',
        );
        echo '<div class="blog-cat"><ul>'; 
        wp_list_categories($args);
        echo '</ul></div>';
    ?>
Answer 1

Самый нормальный вариант для работы в Елементоре это добавление своего виджета. Вот краткая инструкция:

Сначала нужно добавить группу для своих виджетов:

add_action( 'elementor/elements/categories_registered','my_register_group' );
function my_register_group( $elements_manager ) {
    $elements_manager->add_category(
        'custom',
        array(
            'title' => 'My custom widgets',
            'icon'  => 'fa fa-plug',
        )
    );
}

Затем создаем сам виджет (/elementor-widgets/category-list.php):

class Elementor_Category_List_Widget extends Elementor\Widget_Base {
    public function get_name() {
        return 'category-list';
    }
    public function get_title() {
        return 'Category list';
    }
    public function get_icon() {
        return 'fa fa-code';
    }
    public function get_categories() {
        return [ 'custom' ];
    }
    protected function _register_controls() { //If you need some fields }
    protected function render() {
        $term = get_queried_object();
        $args = array(
            'orderby' => 'name',
            'child_of' => $term->term_id,
            'style' => 'none',
            'separator' => '',
        );
        echo '<div class="blog-cat"><ul>'; 
        wp_list_categories($args);
        echo '</ul></div>';
    }
}

Теперь подключаем виджет в елементор:

add_action( 'elementor/widgets/widgets_registered', 'my_register_widgets' );
function my_register_widgets() {
    require_once( get_template_directory() . '/elementor-widgets/category-list.php' );
    \Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Elementor_Category_List_Widget() );
}

Остальные фичи и более подробная инструкция: https://developers.elementor.com/creating-a-new-widget/

Answer 2

Думаю, через шорткод было бы правильнее это сделать. В своей теме (или плагине) создаёте кастомный шорткод с помощью функции add_shortcode(), а в Elementor в нужном месте на странице создаёте блок и прописываете там сам шорткод, например:

[blogcat cat_id="124"]

Плюс такого подхода, что вы можете использовать уже созданный шорткод в других частях сайта, меняя при необходимости id категории (или любой другой параметр)

READ ALSO
psr-2 и phpStorm

psr-2 и phpStorm

есть перевод https://svyatoslavbiz/misc/psr_translation/ есть то, что делает phpStorm

77
стиль кодирования

стиль кодирования

как правильно организовать работу? 1пишу как привык, потом скриптом поправить 2

194
json php сравнение и вывод данных

json php сравнение и вывод данных

прошу помощи, считываю json через php и получаю время в таком виде

225
Warnings: Illegal String Offset + Cannot Assign Empty String To String Offset

Warnings: Illegal String Offset + Cannot Assign Empty String To String Offset

как можно пофиксить данные предупреждения возникшие с переходом на php 71? Вот строки в которых возникают предупреждения:

101