我试图创建一个短代码来显示类别中的帖子数量。我已使用以下代码成功完成此操作:
// Add Shortcode to show posts count inside a category
function add_count_of_posts_in_category() {
$term = get_term( 7, \'category\' );
$count = $term->count;
echo $count;
}
add_shortcode( \'show-posts-count\', \'add_count_of_posts_in_category\' );
但是,这意味着我需要指定
ID
短代码的类别。这意味着我需要为每个类别创建一个短代码,这是无用的。
我试图找到一种方法,用一个变量修改类别ID部分,这样我就可以使用这样的短代码:[show-posts-count="cars"]
在称为“汽车”的类别中显示邮政计数。我找不到这样做的方法。
非常感谢你的帮助。
EDIT: 29/09/2016在代码正常工作后,我正在尝试扩展该函数以统计子类别中的帖子。
因此,如果主类别没有帖子,但有2个子类别,每个子类别都有帖子,那么当我在主类别上使用快捷码时,显示的数字是主类别中所有帖子(如果有)的总和,此外,还有子类别和子类别中的帖子数量。。等
我试过使用get_term_children( $term, $taxonomy );
, 但不知道如何获得子类别的帖子数量,然后将它们相加。
最合适的回答,由SO网友:Ahmed Fouad 整理而成
短代码
// Add Shortcode to show posts count inside a category
function category_post_count( $atts ) {
$atts = shortcode_atts( array(
\'category\' => null
), $atts );
// get the category by slug.
$term = get_term_by( \'slug\', $atts[\'category\'], \'category\');
return ( isset( $term->count ) ) ? $term->count : 0;
}
add_shortcode( \'category_post_count\', \'category_post_count\' );
用法
[category_post_count category="category_slug_or_name"]
如果您想按名称获取计数,而不是slug,请更改此
$term = get_term_by( \'slug\', $atts[\'category\'], \'category\');
对此:
$term = get_term_by( \'name\', $atts[\'category\'], \'category\');
SO网友:Joe
要在指定类别之外的子类别中统计帖子,一种可能是使用cat
选项并计算结果。cat
默认情况下,选项查询子类别中的帖子。
add_shortcode(\'category_post_count\', function ($atts, $content) {
$atts = shortcode_atts([
\'category\' => 0
], $atts);
$cat_id = is_numeric($atts[\'category\']) ?
intval($atts[\'category\']) :
get_category_by_slug($atts[\'category\'])->term_id;
return count(get_posts([
\'nopaging\' => true,
\'fields\' => \'ids\',
\'cat\' => $cat_id
]));
});
有查询子类别和汇总
count
字段,但如果帖子属于多个匹配类别,则这可能会产生无效结果。