我有一个WordPress主题,我有一个情况,在主循环模板(index.php)我需要有时运行自定义循环。所以它看起来像这样:
$the_qry = new WP_Query( array( 'post_type' => 'post', 'offset' => 4, 'orderby' => 'date', 'order' => 'DESC', 'post_status' => 'publish', 'paged' => $paged ) );
if ( $the_qry->have_posts() ) : while ( $the_qry->have_posts() ) : $the_qry->the_post();
但在其他情况下我需要它来运行正常的
if (have_posts()) : while (have_posts()) : the_post();
我尝试将它们包装在这样的IF中:
if ( $special_situation == true ) {
if ( $the_qry->have_posts() ) : while ( $the_qry->have_posts() ) : $the_qry->the_post();
} else {
if (have_posts()) : while (have_posts()) : the_post();
}
// output each post code
endwhile; endif;
但当然它没有用,因为在IF语句中没有关闭while,所以它不会那样工作。我能想到的唯一解决方案是:
if ( $special_situation == true ) {
if ( $the_qry->have_posts() ) : while ( $the_qry->have_posts() ) : $the_qry->the_post();
// output each post code
endwhile; endif;
} else {
if (have_posts()) : while (have_posts()) : the_post();
// output each post code
endwhile; endif;
}
但对我来说这似乎很愚蠢,因为// output each post code
没有改变,所以我复制了很多代码。
有没有办法简化这一切?
谢谢!
答案 0 :(得分:0)
global $wp_query;
if($special_situation == true){
$the_qry = new WP_Query( array( 'post_type' => 'post', 'offset' => 4, 'orderby' => 'date', 'order' => 'DESC', 'post_status' => 'publish', 'paged' => $paged ) );
}
else{
$the_qry = $wp_query; //Sets $the_qry to default query
}
if ( $the_qry->have_posts() ) : while ( $the_qry->have_posts() ) : $the_qry->the_post();
// output each post code
endwhile; endif;