カスタム投稿のカテゴリのリストから特定のカテゴリを除外しようとしています(この場合は 'Uncategorized' - ID:1)。
私はexclude
を試しました:
wp_list_categories([
'include' => wp_list_pluck(get_the_category(), 'term_id'),
'title_li' => '',
'exclude' => 1
]);
しかし、それはまだ現れています。投稿に「未分類」のタグが付いていても、表示されないようにするにはどうすればよいですか。
wp_list_categories()
関数は舞台裏でget_terms()
を使用します。ここで、exclude
引数の documentation は次のようになります。
$include
が空でない場合、$exclude
は無視されます。
代わりに、include
の値からterm_id
を除外することができます。
$include = wp_filter_object_list(
get_the_category(), // Data
[ 'term_id' => 1 ], // Filter Data
'NOT', // Filter Option (exclude)
'term_id' // Pluck Data
);
ここで、 wp_filter_object_list()
をfilterとpluckの両方に使用します。一般的には、$include
配列が空かどうかをチェックするほうが良いでしょう。
if( $include )
{
// ... stuff above ...
wp_list_categories( [
'include' => $includes,
'title_li' => '',
] );
// ... stuff below...
}
私はID 1を持つカテゴリを除外するためにいくつかのトリッキーなコードを構築します。あなたのコードは両方のパラメータを含んでいて除外しています、そしてこれは結果と衝突します。
//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),
]);
これでうまくいくことを願っています!
私の場合、カテゴリのリストを表示したくないのは、投稿が「未分類」の場合だけです。最後の最も簡単な解決策は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);