我有一些代码为自定义帖子类型生成自定义类别列表。代码如下:
$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?
非常感谢,保罗
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
陈述