Как исключить "Без рубрики" из пользовательского виджета категорий?

23 нояб. 2010 г., 16:43:31
Просмотры: 3.12K
Голосов: 0

Приведенный ниже код из моего плагина WordPress выводит отфильтрованный список категорий, исключая категорию "Без рубрики". Однако когда пользователь выбирает "Показывать иерархию" в настройках виджета, в результате отображается и "Без рубрики".

Хотя я добавил 'exclude_tree' => 1 в массив $cat_args. Что я упустил?

class My_Widget_Categories extends WP_Widget {

    function My_Widget_Categories() {
        $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "фильтрует категории без рубрики" ) );
        $this->WP_Widget('my_categories', __('Мои Категории'), $widget_ops);
    }

    function widget( $args, $instance ) {
        extract( $args );
        $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Категории' ) : $instance['title']);
        $c = $instance['count'] ? '1' : '0';
        $h = $instance['hierarchical'] ? '1' : '0';
        $d = $instance['dropdown'] ? '1' : '0';

        echo $before_widget;
        if ( $title )
            echo $before_title . $title . $after_title;
            $cat_args = array('orderby' => 'name', 'show_count' => $c, 'hierarchical' => $h, 'exclude_tree' => 1);
        if ( $d ) {
            $cat_args['show_option_none'] = __('Выбрать категорию');
            wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
1
Комментарии

Код выглядит неполным, поэтому сложно определить ошибку.

hakre hakre
23 нояб. 2010 г. 17:04:26
Все ответы на вопрос 1
2

Трудно сказать по вашему коду. Параметр exclude_tree функции wp_dropdown_categories() очень плохо документирован в кодексе. Он использует get_categories(), где этот параметр вообще не упоминается.

Если у вас нет дочерних элементов в этой категории, вы можете рассмотреть возможность использования параметра exclude вместо или дополнительно к нему. Просто протестируйте, работает ли это. Это может избавить вас от необходимости разбираться с некоторыми багами в WordPress. В последние годы WordPress не очень хорошо справляется с иерархией.

Некоторая справочная информация: Beta 2.8.2 - wp_list_categories buggy hierarchy - Ticket #9999; With wp_list_categories child categories not excluded when parents are excluded - Ticket #8614

23 нояб. 2010 г. 17:07:16
Комментарии

спасибо, у "uncategorized" точно будут дочерние узлы. Похоже, что exclude_tree работает для всего, кроме иерархического отображения. С учетом этого, добавление $cat_args['exclude'] = 1 решает проблему!

Scott B Scott B
23 нояб. 2010 г. 17:14:53

у uncategorized точно есть дочерние элементы, и мне все равно удалось заставить exclude работать. По крайней мере, так это работает в версии 3.01

Scott B Scott B
23 нояб. 2010 г. 17:30:15