You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向WordPress的post__in参数动态传递数据?

如何向WP_Query的post__in参数动态传递数据?

你当前的问题核心是:从get_post_meta获取到的$speakersselected是带括号的逗号分隔字符串(比如(587,585)),但WP_Query的post__in参数要求传入的是整数类型的数组,所以直接赋值或者简单包一层数组都无法满足查询要求。

解决步骤

  1. 清理字符串:去掉两端的括号,得到纯逗号分隔的ID字符串
  2. 分割字符串:按逗号把字符串拆分成数组
  3. 类型转换:把数组中的每个元素转为整数,避免字符串ID导致查询异常

修改后的完整代码

$speakersselected = get_post_meta($post->ID, 'speakersselected', true);
// 处理字符串,转成符合要求的整数数组
$speaker_ids = array_map('intval', explode(',', trim($speakersselected, '()')));

$s_post = array(
    'posts_per_page' => 80, // 注意:showposts已被废弃,推荐使用posts_per_page
    'post_type' => 'speaker',
    'post_status' => 'publish',
    'post__in' => $speaker_ids,
);

echo "<pre>";
print_r($s_post);

代码说明

  • trim($speakersselected, '()'):移除字符串首尾的括号,将(587,585)转为587,585
  • explode(',', ...):按逗号分割字符串,得到数组["587", "585"]
  • array_map('intval', ...):将数组中的每个字符串元素转为整数,最终得到[587, 585],这正是post__in需要的格式
  • 替换showposts为posts_per_page:showposts是WordPress旧版参数,现在官方推荐使用posts_per_page,功能完全一致

内容的提问来源于stack exchange,提问作者user9437856

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:35:23