J'essaie d'exclure une catégorie spécifique de la liste des catégories d'une publication personnalisée (dans ce cas, "Non catégorisé" - ID: 1).
J'ai essayé exclude
:
wp_list_categories([
'include' => wp_list_pluck(get_the_category(), 'term_id'),
'title_li' => '',
'exclude' => 1
]);
Mais il semble encore. Comment puis-je être sûr qu'il n'apparaîtra jamais, même si un message est étiqueté 'Non classé'?
La fonction wp_list_categories()
utilise get_terms()
en coulisse, où documentation pour l'argument exclude
dit:
Si
$include
n'est pas vide,$exclude
est ignoré.
Au lieu de cela, vous pouvez essayer d'exclure le term_id
des valeurs include
:
$include = wp_filter_object_list(
get_the_category(), // Data
[ 'term_id' => 1 ], // Filter Data
'NOT', // Filter Option (exclude)
'term_id' // Pluck Data
);
où nous utilisons wp_filter_object_list()
à la fois filter et pluck . En général, il pourrait être préférable de vérifier si le tableau $include
est vide ou non:
if( $include )
{
// ... stuff above ...
wp_list_categories( [
'include' => $includes,
'title_li' => '',
] );
// ... stuff below...
}
Je construis un code délicat pour exclure la catégorie ayant l'ID 1. J'essaie d'exclure la catégorie (ID: 1), même retirer de plumer aussi. Votre code a inclure et exclure les deux paramètres, ce qui entrave le résultat.
//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),
]);
J'espère que cela vous aidera bien!
Si c'est le cas, la seule fois où je ne voulais pas que la liste des catégories apparaisse, c'était si un message était "Non classé". La solution la plus simple à la fin consistait simplement à utiliser 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' => ''
]);
}
$exclude = array();
foreach (get_categories() as $category)
{$exclude[] = 1;}
if (! empty($exclude))
{ $args .= ('' === $args) ? '' : '&';$args .= exclude='.implode(',', $exclude);}
wp_list_categories($args);