Как заставить WP_Query 'post__in' принимать массив?
6 февр. 2012 г., 21:23:32
Просмотры: 47.6K
Голосов: 8
У меня есть функция, которая возвращает список ID постов через запятую, к которым у определенного пользователя есть доступ. Я хочу использовать этот список в цикле WP_Query.
Пользовательская функция:
$array = user_albums();
foreach( $array as $post ) {
if( !in_array( $post->ID, $array ) )
$ids[] = $post->ID;
}
$access_ids = implode( ', ', $ids );
Вот ситуация:
- На моем тестовом сайте список ID выглядит так:
158, 162, 145, 269
. - Вставка списка ID возвращает только первый пост.
'post__in'=> array( $access_ids ),
- Вставка списка ID не в массиве возвращает ошибку.
'post__in'=> $access_ids ,
- Ручная вставка ID постов возвращает правильные
посты
'post__in'=> array( 158, 162, 145, 269 ),
Что я делаю не так?
Буду благодарен за любую помощь.

MTT
3.59K
Комментарии
Все ответы на вопрос
3
0
Вероятно, implode()
— это то, что ломает работу:
$access_ids = '158, 162, 145, 269';
$array = array($access_ids); //неправильно
var_dump( $array );
// массив
// 0 => строка '158, 162, 145, 269' (длина=18)
$array = array_map( 'trim', explode( ',', $access_ids ) ); // правильно
var_dump( $array );
//массив
// 0 => строка '158' (длина=3)
// 1 => строка '162' (длина=3)
// 2 => строка '145' (длина=3)
// 3 => строка '269' (длина=3)

Rarst
100K
6 февр. 2012 г. 21:38:07
Похожие вопросы
7
ответов
1
ответов
2
ответов
4
ответов