Cómo excluir "sin categoría" del widget de categorías personalizado

23 nov 2010, 16:43:31
Vistas: 3.12K
Votos: 0

El código a continuación pertenece a mi plugin de WP que muestra un listado filtrado de categorías excluyendo la categoría "sin categoría". Sin embargo, cuando el usuario selecciona "Mostrar jerarquía" en las opciones del widget, la visualización resultante incluye "sin categoría".

A pesar de haber colocado 'exclude_tree' => 1 en el array $cat_args. ¿Qué me estoy perdiendo?

class My_Widget_Categories extends WP_Widget {

    function My_Widget_Categories() {
        $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "filtra las categorías sin categoría" ) );
        $this->WP_Widget('my_categories', __('Mis Categorías'), $widget_ops);
    }

    function widget( $args, $instance ) {
        extract( $args );
        $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categorías' ) : $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'] = __('Seleccionar Categoría');
            wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
1
Comentarios

El código no parece completo, por lo que es difícil detectar el error.

hakre hakre
23 nov 2010 17:04:26
Todas las respuestas a la pregunta 1
2

Es difícil decirlo con tu código. El parámetro exclude_tree de wp_dropdown_categories() está bastante poco documentado en el codex. Hace uso de get_categories() que ni siquiera lo menciona.

Si no tienes hijos dentro de esa categoría, puedes considerar usar el parámetro exclude en su lugar o adicionalmente. Solo haz una prueba para ver si funciona. Esto podría ahorrarte el problema de lidiar con algunos errores en WordPress al final. WordPress no ha manejado muy bien las jerarquías en los últimos años.

Alguna información de fondo: Beta 2.8.2 - wp_list_categories jerarquía defectuosa - Ticket #9999; Con wp_list_categories las categorías hijas no se excluyen cuando los padres están excluidos - Ticket #8614

23 nov 2010 17:07:16
Comentarios

gracias, definitivamente habrá nodos hijos en "sin categoría". Parece que exclude_tree funciona en todo excepto en la visualización jerárquica. Dicho esto, ¡agregar $cat_args['exclude'] = 1 hace el truco!

Scott B Scott B
23 nov 2010 17:14:53

sin categoría definitivamente tiene hijos y aún así pude hacer que exclude funcionara. Al menos así es como funciona en 3.01

Scott B Scott B
23 nov 2010 17:30:15