根据某些变量,我需要获取所有帖子或由自定义字段过滤的帖子列表。
我可以获得所有帖子,也可以通过自定义字段和标签通过单独的查询获得过滤后的帖子列表,但我正在尝试组合这些查询。
单个查询返回过滤后的列表:
$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 );但它们都返回完整的列表。
发布于 2020-08-13 00:41:53
您使用的嵌套数组过多
$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,
);
}https://stackoverflow.com/questions/63381066
复制相似问题