这里的问题是由变量作用域引起的。。。
使用global时一切正常$wp_query
, 因为它是一个全局变量,函数如下have_posts
和the_post
知道这一点,因此可以在模板部件中使用它们。
另一方面,您可以定义自定义查询。然后,您得到模板部分,并希望在该模板中使用该变量,但该变量在其中不可访问,因为它不是全局变量。
这就是为什么将代码划分为多个部分的方式不那么常见的原因。如果你这样写的话,它会更好,更容易维护,更安全:
$args = array(
\'post_type\' => APP_POST_TYPE,
\'post_status\' => \'publish\',
APP_TAX_STORE => $term->slug,
\'ignore_sticky_posts\' => 1,
\'posts_per_page\' => -1
));
$query = new WP_Query( $args );
while ( $query->have_posts() ) :
$query->the_post();
get_template_part( \'loop\', \'coupon\' ); // or get_template_part( \'content\', \'coupon\' );
endwhile;
并且在
loop-coupon.php
应该是单帖的内容。
通过这种方式,您可以对不同的循环使用相同的模板部件,因此更容易重用。