Wordpress get_posts将接受数字但不接受相同的变量

时间:2011-12-07 23:45:34

标签: php variables

以下功能在使用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;

     }


}

1 个答案:

答案 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 );