我必须显示访客正在查看的帖子编号, 例如
Post 4 of 13 [Previous] [Next]
我已经计算了类别中的总post
$post_cat = get_the_category( $post->
ID );
if($post_cat) {$post_cat_id = $post_cat[0]->
term_id;
$cat_posts = get_category($post_cat_id);
$total_posts = $cat_posts->
category_count;
}
但是问题是我没有看到正在查看的帖子号码
#1【WordPress中如何查看文章数量】你需要抓住所有帖子(使用与主查询中相同的orderby参数)并找到正确的位置。
$all_posts = get_posts( array(
'category' =>
$post_cat_id, 'posts_per_page' =>
-1
) );
$pos = 0;
if ( $all_posts ) foreach ( $all_posts as $all_post ) {
$pos++;
if ( $all_post->
ID == $post->
ID ) break;
}
echo 'position is: ' . $pos;
#2如果帖子中有多个类别, 这是我使用的另一个版本。此代码将尝试使用父类别, 如果找不到, 它将使用第一个子类别。
你也可以将其与任何分类法一起使用, 只需在这样的函数中设置分类法
echo get_post_number( $taxonomy = 'my_taxonomy' );
这是功能
function get_post_number( $taxonomy = 'category' ) {$query_object= get_queried_object();
$terms =wp_get_post_terms( $query_object->
ID, $taxonomy );
if ( ! empty( $terms ) &
&
! is_wp_error( $terms ) ){foreach ( $terms as $term ) {
if( $term->
parent === 0 ) {
$parent[] = $term;
}else{
$child[] = $term;
}
}if( $parent ) {
$term_name = $parent[0]->
name;
$term_id= $parent[0]->
term_id;
}else{
$term_name = $child[0]->
name;
$term_id= $child[0]->
term_id;
} $post_args = [
'post_type'=>
$query_object->
post_type, 'fields'=>
'ids', 'posts_per_page'=>
-1, 'order'=>
'ASC', 'tax_query'=>
[
[
'taxonomy'=>
$taxonomy, 'field'=>
'term_id', 'terms'=>
$term_id, ], ], ];
$q = get_posts( $post_args );
$total_posts = count( $q );
$post_number = array_search( $query_object->
ID, $q ) + 1;
$text = 'This is currently post #' . $post_number . ' of ' . $total_posts . ' posted in ' . $term_name;
}return $text;
}
推荐阅读
- 导航以外没有其他可点击的内容(a hrefs或click函数)
- 没有样式表在WordPress期望菜单中
- 新页面将我发送到存档页面
- wc统计命令 -l只显示行数 -w只显示单词数 -c只显示字节数
- linux snap安装redis-desktop-manager
- Linux驱动分析之SPI控制器
- 如何尽早找到 NFT 项目(2021 年)
- #yyds干货盘点# 使用 Mybatis——Plus 进行分页查询
- Linux驱动之I2C驱动架构