Strange results from WP_Query

时间:2019-02-22 作者:Sandbox Wizard

我正在尝试使用以下内容检索一组自定义帖子:

// 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查询的第一部分应该与我的原始问题相同,第二部分是在自定义字段中查找相同的费用代码,其中该代码与许多其他相关费用分组。此查询还返回此搜索的相同无关帖子,以及其他搜索的相应结果。

1 个回复
SO网友:MikeNGarrett

您要使用posts_per_page 而不是numberposts. 看看Pagination Parameters for WP_Query.

相关推荐

读取数组中与META_QUERY相关的内容

我正在捕获一个用户的工作周年纪念,他们的内容存储在一个数组中。因此,与这些元字段相关的关键是hire_date 存储在该数组中的值如下所示a:2:{s:3:\"day\";s:1:\"8\";s:5:\"month\";s:5:\"March\";}我真正不明白的是\'orderby\' => \'meta_value\', 实际上是按排序,因为键有多个值。现在如果有以下代码,我想知道ASC订单与$current\\u day相关,但我不相信是这样。我试过使用\'type\' => \'NUM