Cum să excludem categoria "Necategorizat" din widget-ul personalizat de categorii?

23 nov. 2010, 16:43:31
Vizualizări: 3.12K
Voturi: 0

Codul de mai jos provine din plugin-ul meu WP care oferă o listă filtrată de categorii, excluzând categoria "Necategorizat" din afișare. Totuși, când utilizatorul alege "Afișare ierarhică" din opțiunile de configurare ale widget-ului, afișarea rezultată include "Necategorizat".

Având în vedere că am introdus 'exclude_tree' => 1 în array-ul $cat_args. Ce am omis?

class My_Widget_Categories extends WP_Widget {

    function My_Widget_Categories() {
        $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "filtrează categoriile necategorizate" ) );
        $this->WP_Widget('my_categories', __('Categoriile mele'), $widget_ops);
    }

    function widget( $args, $instance ) {
        extract( $args );
        $title = apply_filters('widget_title', empty( $instance['title'] ) ? __( 'Categorii' ) : $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'] = __('Selectează Categoria');
            wp_dropdown_categories(apply_filters('widget_categories_dropdown_args', $cat_args));
1
Comentarii

Codul nu pare complet, așa că este greu să identific eroarea.

hakre hakre
23 nov. 2010 17:04:26
Toate răspunsurile la întrebare 1
2

Este greu de spus din codul tău. Parametrul exclude_tree al funcției wp_dropdown_categories() este destul de nedocumentat în codex. Folosește funcția get_categories() care nu îl menționează deloc.

Dacă nu ai categorii copil în acea categorie, poți încerca să folosești parametrul exclude în loc sau în plus. Testează dacă funcționează. Asta te poate scuti de probleme cu unele bug-uri din WordPress până la urmă. WordPress nu a gestionat foarte bine ierarhia în ultimii ani.

Câteva informații de fundal: 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 nov. 2010 17:07:16
Comentarii

mersi, cu siguranță vor exista noduri copil în afara "necategorizat". Se pare că exclude_tree funcționează pentru tot, cu excepția afișării ierarhice. Cu asta spus, adăugarea $cat_args['exclude'] = 1 funcționează!

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

necategorizat are cu siguranță copii și am reușit să fac exclude să funcționeze oricum. Cel puțin așa funcționează pe 3.01

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