[英]Conditional meta_query and tax_query for wp_query
根据某些变量,我需要获取所有帖子或由自定义字段过滤的帖子列表。
我可以获取所有帖子,并且可以获取由自定义字段过滤的帖子列表,并使用单独的查询进行标记,但我正在尝试组合查询。
单个查询返回过滤后的列表:
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'listings',
'post_status' => 'publish',
'orderby' => 'publish_date',
'order' => 'ASC',
'orderby' => 'date',
'posts_per_page' => '4',
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'listing_status',
'value' => array('active','sold'),
'compare' => 'IN'
)
),
'tax_query' => array(
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $agentslug,
),
)
);
$query = new WP_Query( $args );
但我也可能需要未过滤的列表。 我尝试结合查询:
$meta_query = array();
$tax_query = array();
if ( $agentslug ) {
$meta_query[] = array(array(
'key' => 'listing_status',
'value' => array('active','sold'),
'compare' => 'IN'
));
$tax_query[] = array(array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $agentslug,
));
}
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'listings',
'post_status' => 'publish',
'orderby' => 'publish_date',
'order' => 'ASC',
'orderby' => 'date',
'posts_per_page' => '4',
'paged' => $paged,
'meta_query' => $meta_query,
'tax_query' => $tax_query
);
$query = new WP_Query( $args );
但他们都返回了完整的列表。
您正在使用 1 个嵌套数组
$meta_query = array();
$meta_query[] = array(array());
作用相同
$meta_query = array();
array_push( $meta_query, array(array()) )
并具有相同的结果
$meta_query = array(array(array()));
改变
if ( $agentslug ) {
$meta_query[] = array(array(
'key' => 'listing_status',
'value' => array('active','sold'),
'compare' => 'IN'
));
$tax_query[] = array(array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $agentslug,
));
}
至
if ( $agentslug ) {
$meta_query[] = array(
'key' => 'listing_status',
'value' => array('active','sold'),
'compare' => 'IN'
);
$tax_query[] = array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $agentslug,
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.