WordPress get_posts будет принимать числа, но не идентичную переменную - PullRequest
1 голос
/ 08 декабря 2011

Следующее полностью функционально в WordPress с использованием функции get_posts

$args = array( 'post__in' => array(63,57,34,) );

Это, с другой стороны, не:

$ids = 63,57,34,;
    $args = array( 'post__in' => array($ids) );

Поскольку мы генерируем переменную по другому уравнению, нам нужно использовать второе, но оно даст нам только первый результат, а не все 3. Почему?

UPDATE

$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 голосов
/ 08 декабря 2011

Вы передаете две разные вещи в качестве значения 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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...