昨天我问这个问题有点令人困惑所以今天我会尝试更好的一个:
我使用以下脚本来计算每篇文章的帖子:
的functions.php
function Get_Post_Number($postID){
$temp_query = $wp_query;
$postNumberQuery = new WP_Query('orderby=date&order=DESC&posts_per_page=-1');
$counter = 1;
$postCount = 0;
if($postNumberQuery->have_posts()) :
while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post();
if ($postID == get_the_ID()){
$postCount = $counter;
} else {
$counter++;
}
endwhile; endif;
wp_reset_query();
$wp_query = $temp_query;
return $postCount;
}
single.php中
<?php $currentID = get_the_ID(); ?>
<?php $currentNumber = Get_Post_Number($currentID); ?>
<?php echo $currentNumber; ?>
结果:
类别1有3个帖子
第1页(第1页)给我看 - &gt; 1 的3
第2页(第1部分)给我看 - &gt; 2 的3
第3页(第1页)给我看 - &gt; 3
类别2有2个帖子
第1页(第2页)给我看 - &gt; 4 的2
第2页(第2页)给我看 - &gt; 5 的2
粗体编号来自剧本,问题是,它从第一个帖子到最后一个,而不考虑类别。
正确的计数应该是:
类别1有3个帖子
第1页(第1页)给我看 - &gt; 1 的3
第2页(第1部分)给我看 - &gt; 2 的3
第3页(第1页)给我看 - &gt; 3
类别2有2个帖子
第1页(第2页)给我看 - &gt; 1 的2
第2页(第2页)给我看 - &gt; 2 的2
有人能帮我解决这个问题吗?
的更新
那就是我现在尝试的东西,它总是最重要的。的帖子 - 对我而言总是“8”。 ;(:
的functions.php
function Get_Post_Number($category){
$temp_query = $wp_query;
$postNumberQuery = new WP_Query('orderby=date&order=DESC&posts_per_page=-1&category=$category');
$counter = 1;
$postCount = 0;
if($postNumberQuery->have_posts()) :
while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post();
$postCount++;
endwhile; endif;
wp_reset_query();
$wp_query = $temp_query;
return $postCount;
}
的single.php
<?php $currentCat = get_the_Category(); ?> // Change to get the Category and not the id
<?php $currentNumber = Get_Post_Number($currentCat); ?>
<?php echo $currentNumber; ?>
答案 0 :(得分:0)
您是否尝试按类别进行搜索而只是进行计数?
<?php $currentCat = get_the_Category(); ?> // Change to get the Category and not the id
<?php $currentNumber = Get_Post_Number($currentCat); ?>
<?php echo $currentNumber; ?>
function Get_Post_Number($category){
$temp_query = $wp_query;
$postNumberQuery = new WP_Query('orderby=date&order=DESC&posts_per_page=-1&category=$category');
$counter = 1;
$postCount = 0;
if($postNumberQuery->have_posts()) :
while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post();
if ($postID == get_the_ID()){
$postCount = $counter;
} else {
$counter++;
}
endwhile; endif;
wp_reset_query();
$wp_query = $temp_query;
return $postCount;
}
答案 1 :(得分:0)
您始终查询所有项目,因此您获得更大的数字。
我认为您需要在查询中包含该类别,这样您只能获得类别1的三个结果和类别2的两个结果,然后编号就可以了。
类似于下面的内容,具体取决于数据库架构的外观......
function Get_Post_Number($postID,$category){
$temp_query = $wp_query;
$postNumberQuery = new WP_Query('orderby=date&order=DESC&posts_per_page=-1&category_name=$category');
$counter = 1;
$postCount = 0;
if($postNumberQuery->have_posts()) :
while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post();
if ($postID == get_the_ID()){
$postCount = $counter;
} else {
$counter++;
}
endwhile; endif;
wp_reset_query();
$wp_query = $temp_query;
return $postCount;
}
并更新single.php
<?php $currentID = get_the_ID(); ?>
<?php $currentNumber = Get_Post_Number($currentID,$category); ?>
<?php echo $currentNumber; ?>
更新:添加了single.php的代码