我正在尝试使用以下内容检索一组自定义帖子:
// set search conditions
$args = array(
\'posts_per_page\' => -1,
\'post_type\' => \'fee\',
\'meta_key\' => \'fee_code\',
\'meta_value\' => $postmeta[\'fee_code\']
);
// get results
$the_query = new WP_Query( $args );
“fee\\u代码”来自我插件中的其他地方,包含一个5位数(int)。如果我查看正在生成的SQL,它会给出我想要的结果(在本例中为2个结果)。
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
INNER JOIN wp_postmeta
ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE 1 = 1
AND (( wp_postmeta.meta_key = \'fee_code\'
AND wp_postmeta.meta_value = \'13632\' ))
AND wp_posts.post_type = \'fee\'
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 10;
如果我在phpMyAdmin中运行这个SQL,我会得到我想要的2个结果,但是当我在WordPress中运行这个插件时,我会得到10篇返回的帖子,其中没有一篇在与帖子相关的任何字段中有“13632”(我在本例中查找的费用代码)。
在其他搜索中,我会得到我正在寻找的结果。我不明白为什么在这种情况下我会得到这么多额外的、不相关的结果。
你知道我做错了什么吗?
补充:我有另一个我尝试使用的查询,它查看两个条件。
$args = array(
\'posts_per_page\' => 25,
\'post_type\' => \'fee\',
\'post_status\' => \'publish\',
\'meta_query\' => array(
\'relation\' => \'OR\',
array( // find matches in fee code field
\'key\' => \'fee_code\',
\'value\' => $postmeta[\'fee_code\']
),
array( // find matches in grouped fees section
\'key\' => \'grouped_fees\',
\'value\' => $postmeta[\'fee_code\'],
\'compare\' => \'LIKE\'
),
)
);
meta\\u查询的第一部分应该与我的原始问题相同,第二部分是在自定义字段中查找相同的费用代码,其中该代码与许多其他相关费用分组。此查询还返回此搜索的相同无关帖子,以及其他搜索的相应结果。