当前帖子不工作-为每个帖子给我-1

时间:2015-04-21 作者:Erez Lieberman

我尝试获取当前的帖子索引号,并在一系列课程(类别)中回显本课(帖子)的编号。

我在单曲圈内。php页面

我的代码如下所示:

$args = array(
   \'cat\' => 22,
);
$query = new WP_Query( $args );

echo $query->current_post;
echo $query->post_count;
“$query->post\\u count”非常有效,可以告诉我该类别内的帖子数量,但“$query->current\\u post”不起作用,在每个帖子中都会一直给我“-1”。。。

我做错了什么?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

你所看到的完全是你所期待的,因为你正试图获得$current_post 在圈外。在循环前后$current_post 将始终设置为-1.

要获得正确的值,需要检查$current_post 在循环中,第一个帖子将是0 这将在循环的每次迭代中增加一次。

有关创建Post X of Y 东西,看看these 有关此问题的网站搜索

SO网友:Erez Lieberman

谢谢Pieter。

基于this answer, 我对特定类别的工作做了一些更改。这是我的最终代码:

<div class="lessonNumber">
      <?php 

        class MY_Post_Numbers {

            private $count = 0;
            private $posts = array();

            public function display_count() {
                $this->init(); // prevent unnecessary queries
                $id = get_the_ID();
                echo __(\'שיעור\', \'swgeula\') . \' \' . $this->posts[$id] . \' \' . __(\'מתוך\', \'swgeula\') . \' \' . $this->count;
            }

            private function init() {
                if ( $this->count )
                return;
                $parent_cat = get_the_category()[0];
                $parent_cat_id = $parent_cat->cat_ID;
                global $wpdb;  
                $posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = \'publish\' AND post_type = \'post\' AND ID IN ( SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id = \'"  . $parent_cat_id . "\' ) ORDER BY post_date " ); 
       
                // can add or change order if you want 
                $this->count = count($posts);
  

                foreach ( $posts as $key => $value ) {
                    $this->posts[$value] = $key + 1;
                }
                unset($posts);
            }

        }

        $GLOBALS[\'my_post_numbers\'] = new MY_Post_Numbers;

        function my_post_number() {
            $GLOBALS[\'my_post_numbers\']->display_count();
        }

        my_post_number(); 

    ?>
</div> 

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post