WP_LIST_CATEGORIES排除不工作

时间:2016-09-23 作者:Django Reinhardt

我试图从自定义帖子的类别列表中排除特定类别(在本例中为“未分类”-ID:1)。

我试过了exclude:

wp_list_categories([
  \'include\' => wp_list_pluck(get_the_category(), \'term_id\'),
  \'title_li\' => \'\',
  \'exclude\' => 1
]);
但它仍然出现。即使帖子被标记为“未分类”,我如何确保它永远不会出现?

5 个回复
SO网友:birgire

这个wp_list_categories() 函数使用get_terms() 在幕后documentation 对于exclude 论点说:

如果$include 为非空,$exclude 被忽略。

相反,您可以尝试排除term_idinclude 值:

$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() 过滤和清除。一般来说,最好检查$include 数组是否为空:

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

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

    // ... stuff below...
}

SO网友:AddWeb Solution Pvt Ltd

我构建了一些复杂的代码来排除ID为1的类别。我试图排除类别(ID:1),甚至从Pulk中删除。您的代码包含和排除了这两个参数,这与结果冲突。

//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),
]);
希望这对你有帮助!

SO网友:Django Reinhardt

如果是我的情况,我唯一不希望出现类别列表的时候就是一篇文章“未分类”。最后最简单的解决方案就是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\' => \'\'
    ]);
}

SO网友:rajnik faldu
   $exclude = array();
   foreach (get_categories() as $category) 
   {$exclude[] = 1;}
   if (! empty($exclude)) 
   { $args .= (\'\' === $args) ? \'\' : \'&\';$args .= exclude=\'.implode(\',\', $exclude);}
   wp_list_categories($args);
SO网友:David Lee

在访问与该类别相关的帖子时,如何仅显示特定类别?例如,在访问与CSR事件相关的帖子时,我只想在类别下显示CSR事件。这是CSR帖子的链接https://www.mi-eq.com/blood-donation-compaign/

屏幕截图:https://i.stack.imgur.com/YoTfk.jpg

同样,当访问与其他类别相关的帖子时,只会显示特定类别。有什么最简单的方法可以做到这一点吗?