使用一个WP_QUERY获取有关选定帖子的信息

时间:2019-08-01 作者:Bajeczny

我目前正在“砌体网格”中显示最近的帖子。由于存在多个问题,我产生了显示该网格的预定义行的想法(由于设计的布局)。

首先,我在没有动态内容(帖子)的情况下做到了这一切。然后我尝试让WP\\u查询工作。但我不是在一行中显示多篇文章,而是在每行中显示一篇相乘的文章。

我已经做了“更多帖子”按钮,它也显示了如上所述的内容。

我想prev_post() 这种情况下,这种方法可能是错误的,但我在法典中并没有找到更好的方法。

下面我附上部分代码和;屏幕可以更好地显示问题和预期效果。

$wpb_all_query = new WP_Query([
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => \'4\',
]);

if ($wpb_all_query->have_posts()) {
    while ($wpb_all_query->have_posts()) {
        ob_start();
        ?>

        <div class="list_row three_col">
            <div class="column column_1_3">
                <?php
                $wpb_all_query->the_post();  //1 - the newest post 
                get_template_part(\'partials/list-single-post-masonry\');
                ?>
            </div>
            <div class="column column_1_3">
                <?php
                $wpb_all_query->prev_post(); //2 - older older than 1
                get_template_part(\'partials/list-single-post-masonry\');

                $wpb_all_query->prev_post(); //3 - older than 2
                get_template_part(\'partials/list-single-post-masonry\');
                ?>
            </div>
            <div class="column column_1_3">
                <?php
                $wpb_all_query->prev_post(); //4 - older than 3
                get_template_part(\'partials/list-single-post-masonry\');
                ?>
            </div>
        </div>

        <?php
        $generated_content = ob_get_contents();
        ob_end_clean();
        wp_reset_postdata();

    }
}

return $generated_content;

SCREEN no.1 - how it\'s looking now

SCREEN no.2 - how it should look like

1 个回复
最合适的回答,由SO网友:nmr 整理而成

改变$wpb_all_query->prev_post()$wpb_all_query->the_post().

WP_Query does not have prev_post() 方法,它具有next_post() 方法,该方法从结果中获取下一个帖子(设置post WP\\u Query object的成员),但它不设置全局变量。要获取当前帖子的数据,必须使用$wpb_all_query->post (例如:$wpb\\U all\\U query->post->post\\U name)或使用$wpb_all_query->setup_postdata() 设置全局变量$post.

$wpb_all_query->the_post() 相当于:

$wpb_all_query->next_post();
$wpb_all_query->setup_postdata();

相关推荐

获取GET_POSTS()生成的确切SQL查询

我正在开发一个WordPress,它是由其他人启动然后消失的。她使用不同的插件创建了一些自定义内容类型和变量,现在我想访问她为模板创建的函数中的数据集。$args = array( \'suppress_filters\' => 0, \'posts_per_page\' => -1, \'sort_order\' => \'ASC\',