Как сделать WP_Query 'сообщением __ в', принимают массив?

У меня есть функция, которая возвращает список разделенных запятой значений идентификаторов сообщения, к которым может получить доступ конкретный пользователь. Я хочу использовать этот список в цикле WP_Query.

Пользовательская функция:

$array = user_albums();
foreach( $array as $post ) {
    if( !in_array( $post->ID, $array ) )
        $ids[] = $post->ID;
}
$access_ids = implode( ', ', $ids );

Таким образом, вот ситуация:

  1. На моей испытательной площадке идентификационный список 158, 162, 145, 269.
  2. Вставка списка идентификаторов возвращает только первое сообщение. 'post__in'=> array( $access_ids ),
  3. Вставка списка идентификаторов не в массиве возвращает ошибку. 'post__in'=> $access_ids ,
  4. Вставка идентификаторов сообщения вручную возвращает корректные сообщения 'post__in'=> array( 158, 162, 145, 269 ),

Что я мог делать неправильно?
Я ценю любую справку.

4
13.04.2017, 15:37
3 ответа

$access_ids строка. post__in принимает массив.

Таким образом вместо $access_ids Вы могли использовать 'post__in'=> $ids пропуск $access_ids = implode( ', ', $ids ); все вместе.

4
19.02.2020, 22:10
  • 1
    для меня, это также не работает, можно ли помочь мне? –  Niket Joshi 02.01.2019, 12:37

Это implode() вероятно, что повреждает вещи:

$access_ids = '158, 162, 145, 269';

$array = array($access_ids); //wrong
var_dump( $array ); 
// array
//  0 => string '158, 162, 145, 269' (length=18)

$array = array_map( 'trim', explode( ',', $access_ids ) ); // right
var_dump( $array ); 
//array
//  0 => string '158' (length=3)
//  1 => string '162' (length=3)
//  2 => string '145' (length=3)
//  3 => string '269' (length=3)
5
19.02.2020, 22:10

Просто набор 'post__in'=>$ids, объявление массива ($access_ids) не создает желаемый массив.

1
19.02.2020, 22:10

Теги

Похожие вопросы