我们在开发 WordPress主题时需要获取到指定标签的文章总数该怎么实现呢?最近在给客户的 WordPress 主题做多条件筛选的时候,需要通过当前分类法下是否有文章,如果有则显示,如果没有就不显示,所以需要获取指定分类法(不是分类)下的文章总数。我们需要在其后面显示此标签下共有多少文章做个统计,这并不像统计分类下的文章总数那么简单,我们需要定义 function 函数再调用具体效果看下图。
目录
下面分享 3 种获取到某个标签的文章总数的方法:
方法一:根据标签 ID 获取文章总数:
/*
根据标签ID获取文章总数
*/
function get_tag_post_count_by_id( $tag_id ) {
$tag = get_term_by( 'id', $tag_id, 'post_tag' );
_make_cat_compat( $tag );
return $tag->count;
}
调用方法:
在需要获取标签文章总数的地方添加以下代码:
//根据标签ID获取文章总数
<?php echo get_tag_post_count_by_id( $tag_id ) ?>
方法二:根据标签别名获取文章总数:
//根据标签别名获取文章总数
function get_tag_post_count_by_slug( $tag_slug ) {
$tag = get_term_by( 'slug', $tag_slug, 'post_tag' );
_make_cat_compat( $tag );
return $tag->count;
}
调用方法:
在需要获取标签文章总数的地方添加以下代码:
//根据标签别名获取文章总数
<?php echo get_tag_post_count_by_id( $tag_slug ) ?>
上面我们通过两个小函数就可以实现通过标签 ID 或者标签的别名来取得所指定标签下的文章数量了。
方法三:通过 get_terms()函数先获取
这个可以通过 get_terms()函数先获取出来该分类法下所有的分类信息,然后通过循环并求和返回值 count,得到该分类法下所有文章总数,具体实现方法是,把下面的代码放到您的 functions.php 中:
//获取指定分类法下文章总数
function mx_get_taxonomy_postcount($taxonomy) {
$terms = get_terms( array(
'taxonomy' => $taxonomy,
'hide_empty' => true,
) );
foreach ($terms as $term) {
// 子孙分类文章数累加
$count +=$term->count;
}
return $count;
}
然后在使用的地方使用可以直接显示该分类法下的文章总数,希望对您有所帮助。
案例参考:安教通
WordPress热门标签显示文章数量等自定义功能
只要使用下面的代码函数,复制到相应的位置就可以出现以 a 链接为开头的 15 个按文章量排序的热门标签。
<?php wp_tag_cloud( array ( 'unit' => 'px', 'order' => 'RAND','taxonomy' => '', 'number' => 15 ,'hide_empty' => false) ); ?>
当然如果你想自定义标签的默认代码,可以通过以下的代码来调用,下面的代码中显示了标签的文章数量,以及可以自定义标签前后的代码样式,很方便。
<?php
$tags_list = get_tags( array('number' => '18772', 'orderby' => '', 'order' => 'DESC', 'hide_empty' => false) );
shuffle($tags_list);
$count=0;
if ($tags_list) {
foreach($tags_list as $tag) {
$count++;
echo '<a title="' . $tag->count . '个话题" href="'.get_tag_link($tag->term_id).'" target="_blank" rel="noopener noreferrer">'.$tag->name.'</a>';
if( $count >20 ) break;
}
}
?>