如何向WordPress的post__in参数动态传递数据?
如何向WP_Query的post__in参数动态传递数据?
你当前的问题核心是:从get_post_meta获取到的$speakersselected是带括号的逗号分隔字符串(比如(587,585)),但WP_Query的post__in参数要求传入的是整数类型的数组,所以直接赋值或者简单包一层数组都无法满足查询要求。
解决步骤
- 清理字符串:去掉两端的括号,得到纯逗号分隔的ID字符串
- 分割字符串:按逗号把字符串拆分成数组
- 类型转换:把数组中的每个元素转为整数,避免字符串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,585explode(',', ...):按逗号分割字符串,得到数组["587", "585"]array_map('intval', ...):将数组中的每个字符串元素转为整数,最终得到[587, 585],这正是post__in需要的格式- 替换
showposts为posts_per_page:showposts是WordPress旧版参数,现在官方推荐使用posts_per_page,功能完全一致
内容的提问来源于stack exchange,提问作者user9437856
相关产品推荐
相关产品推荐

