是否显示没有自定义帖子的所有分类?

时间:2018-10-20 作者:Damian

我有用于显示自定义分类的模板。但它们只有在至少有一个自定义贴子的情况下才会显示。即使没有贴子,如何显示这些分类法?这是我的代码:

<div class="c-countires__wrapper">
  <?php $categories = get_categories(\'taxonomy=instructors_countries&post_type=instructors\'); ?>
    <?php foreach ($categories as $category) : ?>
      //content
    <?php endforeach; ?>
</div>

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

在这种情况下,助手方法看起来可能是正确的解决方案,但当您尝试并认真使用它时,它会带来麻烦。

相反,请忽略get_categories, 并将真正的API应用于所有分类法,而不仅仅是类别。

首先,我们需要纠正一种误解。您没有显示分类法。您正在分类法(自定义分类法)中显示术语。这听起来可能有点迂腐,但理解API是必不可少的。如果你不做这个区分,事情就会变得混乱,即使它们真的很简单。

分类法是对事物进行分组/过滤/分类的一种方法,例如。tag, category, colour, company, typered, blue, green, yellow 所有条款都在colour 分类法所以您试图显示分类法中的所有术语。这很重要,因为如果你搜索它,就会得到结果。如果您搜索如何显示分类法,则得到的结果要少得多。

这导致我们the more general function get_terms, 第一个例子回答了您的问题:

$terms = get_terms( array(
    \'taxonomy\' => \'post_tag\',
    \'hide_empty\' => false,
) );
就像get_categories 函数,它返回WP_Term 对象。以下是官方文件中的另一个示例:

$terms = get_terms( array(
    \'taxonomy\' => \'my_taxonomy\'
) );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    echo \'<ul>\';
    foreach ( $terms as $term ) {
        echo \'<li>\' . $term->name . \'</li>\';
    }
    echo \'</ul>\';
}
其他一般注意事项您的代码有过多的<?php?> 标签。键入所有那些不必要的打开和关闭PHP标记必须花费很长时间。您不需要在每一行的末尾关闭PHP标记。如果您有5行PHP,那么只需一个开始的PHP标记,然后是5行,然后是结束标记即可。如果文件的最后一行是PHP,您也不需要结束标记,请注意函数如何使用数组而不是字符串作为参数。老年人get_categories(\'taxonomy=instructors_countries&post_type=instructors\') 样式稍微慢一点,并阻止您使用更高级的功能。例如,不可能执行meta_querytax_query 在里面WP_Query 如果你把它作为字符串传入。使用array( \'taxonomy\' => \'instructors_countries\' .. etc ) 相反你甚至可以把它放在多行上,以便阅读WP_Error 可能已经被退回了。现在,您有了一个PHP错误日志,其中充满了警告或致命错误:(`

结束

相关推荐