我正在修改WP\\u主查询,以使用pre_get_posts
, 像这样:
add_action( \'pre_get_posts\', \'public_loop\' );
public function public_loop( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
$query->set( \'meta_key\', \'deadline\' );
}
}
然后我通过AJAX加载旧帖子,所以我需要创建一个新的查询,我希望它与我修改的主查询具有相同的参数。按预期将参数作为参数传递:function load_new_posts() {
$q = new WP_Query( array( \'meta_key\' => \'deadline\' ) );
if ( $q->have_posts() ) :
while ( $q->have_posts() ) : $q->the_post();
get_template_part( \'views/post/content\', get_post_format() );
endwhile;
endif;
}
但使用set
方法不:function load_new_posts() {
$q = new WP_Query();
$q->set( \'meta_key\', \'deadline\' );
if ( $q->have_posts() ) :
while ( $q->have_posts() ) : $q->the_post();
get_template_part( \'views/post/content\', get_post_format() );
endwhile;
endif;
}
在第二种情况下,AJAX调用表示“此请求没有可用的响应数据”。然而,如果我var_dump( $q )
查询看起来正确。我宁愿使用set
这样我就可以创建一个可重用的函数(因为我在pre_get_posts
在AJAX调用中)。