我试图通过将三个WP_QUERIES凝结成一个来加快WordPress网站。我需要单独的类别,因此我正在拨打电话并定义3个阵列以使用开关来保存帖子,例如:

 $new_query = new WP_Query();
                $new_query->query('post_type=post&paged='.$paged);
                if ( $new_query->have_posts() ) : while ( $new_query->have_posts() ) : $new_query->the_post();              
                $category = choose_one_category(get_the_category());

                switch ($category){
                    case "Category 1":
                        $cat1[] = $post;
                        break;
                    case "Category 2":
                        $cat2[] = $post;
                        break;
                    case "Category 3":
                        $cat3[] = $post;
                        break;
                }


                endwhile; endif;

这给我留下了3个阵列,这些数组分类得很好。现在我希望定义循环外的变量$ post,以便我可以使用类似的方法 the_date() & comments_number() 不必重写这些功能,谁能提供帮助?

我努力了:

                    foreach ($centre as $new_post){
                        $post = $new_post;

                                             include('front_page_loop.php');
                    } 

在哪里 front_page_loop.php 是我的循环代码,但我只是收到同一篇文章,尽管有不同的日期

有帮助吗?

解决方案

我认为 setup_postdata($post) (内部)函数可以做到这一点。我未能在Codex(典型)中找到适当的文档,但是在这里和那里都有示例 使用自定义选择查询显示帖子.

该测试片段似乎可以正常工作,例如,您有问题的代码:

foreach ( $cat1 as $post ) {

    setup_postdata($post);
    printf( 'Post "%s" was posted %s ago<br />',
        get_the_title(),
        human_time_diff( strtotime( get_the_date() ) )
        );
}
许可以下: CC-BY-SA归因
scroll top