以下功能在使用get_posts函数
的wordpress中完全正常$args = array( 'post__in' => array(63,57,34,) );
另一方面,这不是:
$ids = 63,57,34,;
$args = array( 'post__in' => array($ids) );
由于我们通过另一个方程生成变量,我们需要使用第二个,但它只会给我们第一个结果而不是全部3.为什么?
更新
$ids
是从寻找某些标准的foreach生成的。
if($final != false){
$ids .= $result->ID . ',' ;
}
完整的代码就是这样。
$proto = $_GET['p'];
$terms = $_GET['s'];
if($proto == 'inline') {
$search = get_posts('post_type=post&post_status=publish');
foreach($search as $result) {
$title = get_the_title($result);
$tags = wp_get_post_tags( $result->ID);
foreach($tags as $tag){ $tago[$result->ID].= $tag->name.',';}
$full = $title . ' ' . $tago[$result->ID];
$final = strpos($full,$terms);
if($final != false){
$ids .= $result->ID . ',' ;
}
}
echo $ids;
$args = array( 'post__in' => array($ids) );
$srs = get_posts($args);
foreach($srs as $sr) { echo $sr->post_title;
}
}
答案 0 :(得分:0)
您将两个不同的内容作为post__in
值传递。第一个是整数数组。第二个是包含单个字符串的数组。您可以看到与以下区别:
$working = array(63,57,34,);
print_r($working);
$not_working = array('63,57,34,');
print_r($not_working);
我怀疑WordPress在数组成员上使用intval()
或类似物来清理其输入,这就是为什么你只获得第一个元素。
我建议在循环之前将$ids
声明为数组:
$ids = array();
并附加值:
$ids[] = $result->ID;
你的循环中的。然后$args
可以设置为:
$args = array( 'post__in' => $ids );