从列表中排除自定义类别

时间:2014-03-17 作者:Paul

我有一些代码为自定义帖子类型生成自定义类别列表。代码如下:

    $html .=    \'<ul class="item-direct-filters"><li class="first"><strong>view more:</strong></li>\';
    $k = 0;
    foreach ( $terms as $term )
    {
        $terms = get_the_terms( $post->ID, $taxonomy );
        $k++;
        if ($term->name != "") $html .= \'<li><a href="/work/\' . $term->slug . \'" class="\' . $term->slug . \'">\' . $term->name . \'</a></li>\';
    }

    $html .= \'</ul>\';
你知道我该如何调整它以从列表中排除特定的自定义类别吗?我想我需要在foreach前面写一行,告诉它跳过某些类别ID?

非常感谢,保罗

1 个回复
SO网友:s_ha_dum

我对这怎么可能起作用感到困惑,哪怕是一点点。您正在设置$terms 变量之后,您开始尝试在其上循环。这毫无意义。快速重写将使这一点变得更好:

$html = \'\';
$html .=    \'<ul class="item-direct-filters"><li class="first"><strong>view more:</strong></li>\';
$taxonomy = \'category\';
$k = 0;
$terms = get_the_terms( $post->ID, $taxonomy );
foreach ( $terms as $term )
{
    $k++;
    if ($term->name != "") $html .= \'<li><a href="/work/\' . $term->slug . \'" class="\' . $term->slug . \'">\' . $term->name . \'</a></li>\';
}

$html .= \'</ul>\';

echo $html;
但这不会让你排除一个类别。get_the_terms() 本机无法做到这一点,您可能不需要担心专门的查询。The results should be cached relatively well. 只需即时排除您的术语:

foreach ( $terms as $term )
{
    $k++;
    if ($term->name != "" && 1 !== $term->term_id) {
      $html .= \'<li><a href="/work/\' . $term->slug . \'" class="\' . $term->slug . \'">\' . $term->name . \'</a></li>\';
    }
}
请注意if 陈述

结束

相关推荐