我正在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()'重置每个文件中的循环,因此它不会干扰下一个可能不同的部分。基本上,循环必须继续下一个类似的命名部分,而不重复任何帖子..
关于如何做到这一点或建议的任何想法都将非常受欢迎。
答案 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'
);
希望它有意义