@ipatovd

Почему цыкл в функции Wordpress при обновлении через ajax выводит только последний пост?

У меня через ajax приходят в функцию по методу пост ID добавленных постов, я их пихаю в wp query -> post__in ( ) - далее вывожу стандартный цыкл, все работает, но на странице выводит только последний добавленный пост! В чем дело?

if (isset($_POST['post_id'])) {
		$post_ids = $_POST['post_id'];
		$event_posts = new WP_Query(array( 
				'post_type' => 'any', 
				'post__in' => array($post_ids) 
			)  
		);

		require plugin_dir_path( __FILE__ ) . 'tpl.php';


А вот код тпл файла

<?php if($event_posts->have_posts()) : ?>
			<?php while($event_posts->have_posts()): $event_posts->the_post(); ?>
					<?php the_title(); ?>
			<?php endwhile; ?>
<?php endif; wp_reset_query(); ?>


Что за такое понять не могу...
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 3
@LiguidCool
При каждой итерации вы перезаписываете старый $event_posts и записываете туда новые данные. Соответственно "кто последний, тот и папа".
$event_posts[] = new WP_Query(array( 
    'post_type' => 'any', 
    'post__in' => array($post_ids) 
)

Ну или используйте array_push.
Ответ написан
@ipatovd Автор вопроса
рабочий вариант!

if (isset($_POST['post_id'])) {
		$post_ids = $_POST['post_id'];
		$ids = explode(',', $post_ids, -1);
		$event_posts = new WP_Query(array('post_type' => 'any', 'post__in' => $ids));
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
У вас $post_ids скорее всего содержит строку вида 1,2,3. Сделайте из нее массив:

'post__in' => explode( ',', $post_ids ),
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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