wp_list_categories exclude no funciona

2

Intento excluir una categoría específica de una lista de categorías que tiene una publicación personalizada (en este caso, 'Sin clasificar' - ID: 1).

He intentado exclude :

wp_list_categories([
  'include' => wp_list_pluck(get_the_category(), 'term_id'),
  'title_li' => '',
  'exclude' => 1
]);

Pero sigue apareciendo. ¿Cómo puedo asegurarme de que nunca aparezca, incluso si una publicación está etiquetada como "Sin clasificar"?

    
pregunta Django Reinhardt 23.09.2016 - 12:54

4 respuestas

4

La función wp_list_categories() usa get_terms() detrás de escena, donde la documentación para la El argumento exclude dice:

  

Si $include no está vacío, se ignorará $exclude .

En su lugar, podrías intentar excluir term_id de los valores de include :

$include = wp_filter_object_list( 
    get_the_category(),   // Data
    [ 'term_id' => 1 ],   // Filter Data
    'NOT',                // Filter Option (exclude)
    'term_id'             // Pluck Data 
);

donde usamos wp_filter_object_list() para ambos filter y pluck . En general, podría ser mejor verificar si la matriz $include está vacía o no:

if( $include )
{
    // ... stuff above ...

    wp_list_categories( [
        'include'  => $includes,
        'title_li' => '',
    ] );

    // ... stuff below...
}
    
respondido por el birgire 23.09.2016 - 13:09
2

Construyo un código complicado para excluir la categoría que tiene ID 1. Estoy tratando de excluir la categoría (ID: 1), incluso eliminarla de pluck también. Su código ha incluido y excluido ambos parámetros y esto genera un conflicto con el resultado.

//List the pluck...
$exclude_cat_id = 1;
$list_pluck = wp_list_pluck(get_the_category(), 'term_id');

//Get exlude pluck(ID:1) index...
$exclude_pluck = array_search($exclude_cat_id, $list_pluck);

//unset excluded pluck...
unset($list_pluck[$exclude_pluck]);

//Get all category except ID=1
$arrCat = wp_list_categories([
  'include' => $list_pluck,
  'title_li' => '',
  'exclude' => array($exclude_cat_id),
  'exclude_tree' => array($exclude_cat_id),
]);

¡Espero que esto te ayude bien!

    
respondido por el AddWeb Solution Pvt Ltd 23.09.2016 - 13:19
1

En mi caso, la única vez que no quise que apareciera la lista de categorías era si una publicación era "Sin clasificar". La solución más simple al final fue usar in_category() :

if (!in_category(1)) {
    // Display the categories this post belongs to, as links
    wp_list_categories([
            'include' => wp_list_pluck(get_the_category(), 'term_id'),
            'title_li' => ''
    ]);
}
    
respondido por el Django Reinhardt 23.09.2016 - 14:07
0
   $exclude = array();
   foreach (get_categories() as $category) 
   {$exclude[] = 1;}
   if (! empty($exclude)) 
   { $args .= ('' === $args) ? '' : '&';$args .= exclude='.implode(',', $exclude);}
   wp_list_categories($args);
    
respondido por el rajnik faldu 23.09.2016 - 15:28

Lea otras preguntas en las etiquetas