当前位置: 首页 > 知识库问答 >
问题:

使用后置ID的数组与post__in

鲜于宏义
2023-03-14

在合并了两个wp_查询的结果之后,我尝试使用它们的ID数组作为新wp_查询的post_u-in参数。但出于某种原因,我得到了奇怪的结果(帖子总数不匹配)。据我所知,我无法将post ID数组转换为post_uuuin的正确格式(它接受ID数组)。

到目前为止我所做的:

echo count($first_query->posts);  // returns 101
echo count($second_query->posts); // returns 201

$together = array_merge((array)$first_query->posts,(array)$second_query->posts);

echo count($together);          // returns 302
var_dump($together);            // returns: array(302) { [0]=> object(WP_Post)#6642 (24) { ["ID"]=> int(41) ["post_author"]=> string(1) "1" ["post_date"]=> string(19) "2005-04-01 05:49:22" ["post_date_gmt"]=> string(19) "2005-04-01 05:49:22" ["post_content"]=> string(0) "" ["post_title"]=> string(21) ...

到目前为止还不错。我已经转换为数组,以避免array_merge返回null,当其中一个数组是空的。现在我试图得到一个数组的ID的使用在一个新的wp_query,像这样:

$result_args = array(
    'post_type'             => 'post',
    'post__in'              => $ids,    // array(10,11,12 and so on)
    'ignore_sticky_posts'   => 1,
    'post_per_page'         => -1
);

$result = new WP_Query($result_args);

我一直试图通过几种方式将$合在一起转换成整数数组:

$ids = wp_list_pluck($together, 'ID');
echo count($ids);        // returns 302
var_dump($ids);          // returns array(302) { [0]=> int(41) [1]=> int(44) [2]=> int(47) [3]=> int(89) ...

但是,在使用$ids作为post_uu的参数后,wp_query$结果返回的post总数错误。

echo count($result);       // returns 10
var_dump($result_args);    // returns array(4) { ["post_type"]=> string(4) "post" ["post__in"]=> array(302) { [0]=> int(41) [1]=> int(44) [2]=> int(47) ...  int(969) } ["ignore_sticky_posts"]=> int(1) ["post_per_page"]=> int(-1) }

添加“字段”后=

echo count($together);    // returns 302
var_dump($together);      // returns array(302) { [0]=> int(41) [1]=> int(44) [2]=> int(47) [3]=> int(89) 

但是,在错误的结果中使用post__的数组后,返回:

echo count($result);      // returns 10

插入ID的数组将返回一个post__in无法处理的字符串。

echo count($result);      // returns 0

也许我看错了方向,还有别的地方不对劲,但我想不出是什么,所以任何帮助都将不胜感激。

'post_per_page'

应该是“posts_per_page”现在一切正常。

共有1个答案

关志
2023-03-14

我不明白为什么您不只是返回带有原始查询的ID,以避免所有这些转换WP_Query()有一个fields参数,可用于返回仅由post ID组成的数组。以最简单的形式,查询如下所示:

// This query returns an array() of post IDs, rather than full post objects
$args = array(
    'fields' => 'ids',
);
$first_query = new WP_Query( $args );

从那时起,您可以执行标准的array_merge()(这两个查询都将生成数组;因此您不需要将它们转换为(数组))。然后,这个合并的数组将只由后ID组成,并且可以直接在post__in中用于另一个查询(如果需要)。

 类似资料:
  • 在“设计状态形状”一章中,文档建议将您的状态保留在由ID设置关键帧的对象中: 将对象中的每个实体以ID作为键存储,并使用ID从其他实体或列表中引用它。 他们接着说 将应用的状态视为数据库。 我正在处理过滤器列表的状态形状,其中一些过滤器将被打开(它们显示在弹出窗口中),或者具有选定的选项。当我读到“把应用程序的状态想象成一个数据库”时,我想把它们想象成一个JSON响应,因为它将从API(本身由数据

  • 我目前正面临一个问题,就是如何将一个数组中的项放入JRadioButtons中。我有下面的代码,当我尝试将它们添加到JFrame时,会出现以下错误。 我也试着在以前的地方做 但出现以下错误

  • 我有一个练习,找出出了什么问题。我会感激的帮助:) 编写将具有两个int类型数组和更大的返回数组(如果两个数组中的一个更大)以及与数组相同位置的元素的总和的代码。

  • 块引号 null 爪哇

  • 问题内容: 美好的一天, 我愿意检索Mysql中新插入的行的id值。 我知道有mysqli_insert_id函数,但是: 我无法指定表格 如果同时进行查询,则可能有检索错误ID的风险。 我正在使用node.js MySQL 我不想冒着查询最高ID的风险,因为有很多查询,这可能会给我一个错误的查询… (我的ID列是自动递增的) 问题答案: https://github.com/mysqljs/my

  • 问题内容: 因为我有一个包含重复项的int数组的ArrayList,所以我想使用HashSet。不幸的是,我无法按需使用HashSet: 结果是: 有人可以告诉我我错了吗? 在此先感谢Dominique(java newbie) 问题答案: 数组不会在类中重写并实现,因此,只有当a1 == a2时,两个数组a1和a2 才被视为彼此相同,这在您的情况下是错误的。 如果使用s而不是数组,则将解决问题,