Cómo excluir "sin categoría" del widget de categorías personalizado
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));

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

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!
