我有一个自定义的帖子类型“Listing”,我想获取所有具有自定义字段的列表gateway_value != \'Yes\'
, 并按另一个自定义字段对结果排序,location_level1_value
. 我可以让查询单独工作,但不能将它们组合起来:
查询1(按位置排序):
$wp_query = new WP_Query( array (
\'post_type\' => \'listing\',
\'post_status\' => \'publish\',
\'posts_per_page\' => \'9\',
\'meta_key\' => \'location_level1_value\',
\'orderby\' => \'location_level1_value\',
\'order\' => \'ASC\',
\'paged\' => $paged
)
);
查询2(自定义字段值!=是): $wp_query = new WP_Query( array (
\'post_type\' => \'listing\',
\'posts_per_page\' => \'9\',
\'post_status\' => \'publish\',
\'meta_key\' => \'gateway_value\',
\'meta_value\' => \'Yes\',
\'meta_compare\' => \'!=\',
\'paged\' => $paged
)
);
组合查询:我查看了codex 有关此方面的帮助,但以下查询不起作用: $wp_query = new WP_Query( array (
\'post_type\' => \'listing\',
\'posts_per_page\' => \'9\',
\'post_status\' => \'publish\',
\'meta_query\' => array(
array(
\'key\' => \'gateway_value\',
\'value\' => \'Yes\',
\'compare\' => \'!=\'
),
array(
\'key\' => \'location_level1_value\'
)
),
\'orderby\' => "location_level1_value",
\'order\' => \'ASC\',
\'paged\' => $paged
)
);
组合查询有什么错?[更新]:所以现在3.1已经发布,上面的组合查询仍然不起作用。我确实得到了结果,只是排序不正确。
[更新]:var_dump($wp_query->request)
给出以下内容:string(527) " SELECT SQL_CALC_FOUND_ROWS wp_7v1oev_posts.* FROM wp_7v1oev_posts
INNER JOIN wp_7v1oev_postmeta ON (wp_7v1oev_posts.ID = wp_7v1oev_postmeta.post_id)
INNER JOIN wp_7v1oev_postmeta AS mt1 ON (wp_7v1oev_posts.ID = mt1.post_id) WHERE 1=1 AND wp_7v1oev_posts.post_type = \'listing\' AND (wp_7v1oev_posts.post_status = \'publish\') AND wp_7v1oev_postmeta.meta_key = \'gateway_value\' AND CAST(wp_7v1oev_postmeta.meta_value AS CHAR) != \'Yes\' AND mt1.meta_key = \'location_level1_value\' ORDER BY wp_7v1oev_posts.post_date DESC LIMIT 0, 9"