显示与类别相关的帖子编号

时间:2015-09-24 08:17:07

标签: php wordpress

昨天我问这个问题有点令人困惑所以今天我会尝试更好的一个:

我使用以下脚本来计算每篇文章的帖子:

的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

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

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; ?>

2 个答案:

答案 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的代码