php - wp_query 的条件 meta_query 和 tax_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,
);
}
推荐阅读
- python - 我没有任何错误,我的循环一直在运行。我究竟做错了什么?
- php - Laravel 集合 - filter() 方法设置自定义属性
- java - 功能 andoid 模块 - 不允许使用应用插件:'com.android.feature'
- python - 尝试在 Mac (OS Catalina) 上安装 ssh2-python 时遇到问题
- c# - 更高精度的浮点计算
- android - 在 RxJava 中创建同步间隔
- latex - 如何在 $a,b,c,d \in \mathbb{Z}$ 下方写 $ad-bc=1$?
- scikit-learn - 在 sklearn 源代码中输入 cython 的 SIZE_t
- xml - 使用 Dart 解码 Windows 1255
- javascript - 在 HeaderMenu 中调用 ContractManager 的函数时出错