web-dev-qa-db-ja.com

wp_list_categories除外除外

カスタム投稿のカテゴリのリストから特定のカテゴリを除外しようとしています(この場合は 'Uncategorized' - ID:1)。

私はexcludeを試しました:

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

しかし、それはまだ現れています。投稿に「未分類」のタグが付いていても、表示されないようにするにはどうすればよいですか。

2

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()filterpluckの両方に使用します。一般的には、$include配列が空かどうかをチェックするほうが良いでしょう。

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

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

    // ... stuff below...
}
4
birgire

私は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' => ''
    ]);
}
1
   $exclude = array();
   foreach (get_categories() as $category) 
   {$exclude[] = 1;}
   if (! empty($exclude)) 
   { $args .= ('' === $args) ? '' : '&';$args .= exclude='.implode(',', $exclude);}
   wp_list_categories($args);
0
rajnik faldu