我想添加一些过滤器来选择所需的帖子,如:
function exclude_post($query) {
if ($query->is_home) {
// Do some PHP code
}
return $query;
}
add_filter('pre_get_posts', 'exclude_post');
如何向现有 WP_Query 实例$query
添加新条件?
答案 0 :(得分:5)
如果您想使用过滤器修改查询,可以在函数中使用$query->set('post_type', 'post');
,只需使用参数addapt。
如果要修改主循环,可以使用:
global $wp_query;
$args = array_merge( $wp_query->query_vars, array( 'post_type' => 'product' ) );
query_posts( $args );
答案 1 :(得分:0)
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'people',
'field' => 'slug',
'terms' => 'bob'
)
)
);
$query = new WP_Query( $args );
来自codex的代码段在此处查看更多内容wp query
答案 2 :(得分:0)
您想要创建自定义的帖子列表,但您不想丢失当前的wp_query
?轻松,使用wp_reset_query()
!
$my_query = new WP_Query( $argument_array );
//... Do all you have to do with the query ...
wp_reset_query(); // This will restore the original query.
答案 3 :(得分:0)
作为wp_reset_query()的替代方法,并提供了对您的查询的更多控制,以下是对我有用的方法:
您可以使用array_push()将其添加到$ args数组中。然后,您只需创建一个新的WP_Query。当然,这只有在您还设置了$ args变量的情况下才能起作用。
在您的代码中,您可以编写:
$new_arg = array('tax_query' => array(
array(
'taxonomy' => get_query_var('taxonomy'),
'field' => 'slug',
'terms' => get_query_var('term'),
),
)
);
array_push($args,$new_arg);
$query = new WP_Query( $args );
在上面的代码中,我只是在使用array_push向WP_QUERY使用的同一数组添加新的数组元素。然后,我只是将其传递回WP_QUERY。
我希望这对某人有帮助。