Cum să excludem categoria "Necategorizat" din widget-ul personalizat de categorii?
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));

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

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ă!
