按类别快捷码显示帖子数

时间:2019-02-27 作者:En Código WP

我有这个按类别显示帖子数量的代码。

如果我访问类别体育,请在标题34中显示文章。如果我访问标题12文章中显示的营养类别。

但是这个代码错了,有人知道为什么吗?

add_shortcode(\'catcount\', \'wp_get_cat_postcount\');
function wp_get_cat_postcount($id) {
    $cat= get_the_category();
    echo \'<span class="catcount">\'. $cat[0]->count .\' ARTÍCULOS</span>\';
}

2 个回复
SO网友:Krzysiek Dróżdż

好的,那么代码是错误的,因为其中有很多错误:

短代码应返回其结果,并且不应打印任何内容

  • 您不需要对短代码回调的参数执行任何操作
  • 您没有传递任何ID来获取\\u类别,因此它将返回当前帖子的类别数组
  • 您不检查是否分配了任何类别(get\\u该类别可以返回空数组)
  • SO网友:Jacob Peattie

    get_the_category() 获取分配给“当前帖子”的类别,因此在您的情况下,这可能不起作用。

    首先,当您在循环之外使用“当前帖子”时,它不一定是确定的。

    其次,如果“当前帖子”(可能是当前存档页上的第一篇帖子)有多个类别,那么不能保证其第一个类别($cat[0]) 将与您正在查看的存档属于同一类别。

    如果要获取当前查看其存档的类别中的帖子数量,请使用get_queried_object() 要获取该类别:

    function wpse_330091_get_cat_postcount() {
        if ( is_category() ) {
            $cat = get_queried_object();
    
            return \'<span class="catcount">\' . $cat->count . \' ARTÍCULOS</span>\';
        }
    }
    add_shortcode( \'catcount\', \'wpse_330091_get_cat_postcount\' );
    
    另请注意:

    我查过了is_category() 首先,这样我们可以确定查询的对象将是一个类别return 他们的产出,而不是echo.

  • wp_ 是WordPress使用的前缀,您应该使用自己的前缀以避免冲突
  • 相关推荐

    Shortcode to show the code

    如何创建一个短代码(或类似的代码)来在页面的某个地方显示页脚?我试过了,但没有结果。。。function show_footer() { return get_footer(); } add_shortcode( \'show_f\', \'show_footer\' ); 或者这个。。。function show_footer() { get_footer(); } add_shortcode( \'show_f\', \'sho