Wordpress在不同页面上显示帖子

时间:2013-11-14 22:10:39

标签: php wordpress loops

我正在WordPress中创建一个登陆页面(一页有很多部分),我正在使用get_template_part()调用每个部分。所以我有类似的东西;

    <?php get_template_part( 'content', 'reasons-to-purchase'); ?>   
    <?php get_template_part( 'content', 'testimonials'); ?>  
    <?php get_template_part( 'content', 'reasons-to-purchase'); ?>   

然后每个内容文件都有一个循环来返回与其类别匹配的帖子,posts_per_page设置为1,如下所示(content-reason-to-purchase.php);

            <?php

        $args = array(
            'post_type' => 'section',    
            'category_name' => 'Reasons-To-Purchase',
            'posts_per_page' => 1,
            'orderby' => 'date',
            'order' => 'DESC'
        );

        $the_query = new WP_Query ( $args );

 if (get_category_by_slug('Reasons-To-Purchase')->category_count > 0 ) {?>


<!-- Featured content image or slider. -->
        <div class="container panel">

            <?php if ( have_posts() ) : while ( $the_query->have_posts () ) : $the_query->the_post(); ?>

           <?php the_content(); ?>


        </div>

<?php } ?>

            <?php wp_reset_query(); ?> <div class="clearfix"></div>    

我想要的是创建与我喜欢的顺序一样多的这些部分,并且每个部分中的循环拉动分配给该类别的下一个帖子。因此,例如在第一个“购买理由”部分中,第一个帖子被拉出,然后在第二个“购买理由”中,第二个帖子被调用。目前我使用'wp_reset_query()'重置每个文件中的循环,因此它不会干扰下一个可能不同的部分。基本上,循环必须继续下一个类似的命名部分,而不重复任何帖子..

关于如何做到这一点或建议的任何想法都将非常受欢迎。

1 个答案:

答案 0 :(得分:1)

您需要在调用get_template_part()之前传递page参数,但get_template_part()不支持重复使用您的变量,您需要使用locate_template()include()

$page=1;
include(locate_template('content-reasons-to-purchase.php'));
include(locate_template('content-testimonials.php'));
$page=2;
include(locate_template('content-reasons-to-purchase.php'));
$page=3;
include(locate_template('content-reasons-to-purchase.php'));/* and so on page 4,5,6... */

在你的模板中稍作修改代码

if(empty($page)){
$page=1;
}

 $args = array(
            'post_type' => 'section',    
            'category_name' => 'Reasons-To-Purchase',
            'posts_per_page' => 1,
            'orderby' => 'date',
            'paged'=>$page, /* <======= get page no from your file i.e locate_template(...) and use here*/
            'order' => 'DESC'
        );

希望它有意义