Intereting Posts
Почему я получаю «вызов неопределенной функции curl_init ()», когда я пытаюсь использовать плагин «Общительный»? WordPress 3 – как хранятся пароли и как они сравниваются с ними? Выпадающие страницы в API настроек Верхняя панель инструментов не отображается в панели управления wordpress Хотите исключить сообщения в блоге из категории Предыдущий / Следующий кнопки Как проверить, является ли текущая статическая страница главной страницей из плагина администратора Как отслеживать короткий код для его функциональности Как удалить изображение на одном продукте и получить продукт на странице? Как добавить описание к виджетам? wpdb-> get_var всегда возвращает 0 Управление столбцами: порядок по заголовку post_parent как получить 5 максимальное количество от пользовательской таксономии в wordppress Как остановить wordpress, чтобы сделать запрос по умолчанию? мне нужно изменить префикс базы данных по умолчанию? Как отображать сообщения об ошибках формы комментариев на одной странице

возврат в основной цикл не работает

Я открываю страницу администрирования для моего настраиваемого типа сообщений. Таким образом, URL-адрес:

сор-админ / post.php? пост = 39 & действие = редактировать

Когда я делаю следующий код, выход, конечно, 39:

<?php global $post; echo $post->ID; ?> 

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

 <?php global $post; echo $post->ID.", "; $args = array('post_type' => 'xyz'); $loop = new WP_Query($args); if(!is_null($loop) && $loop->have_posts()) { while($loop->have_posts()) : $loop->the_post(); echo get_the_ID().", "; endwhile; } wp_reset_postdata(); echo $post->ID; ?> 

После этого кода вывод: 39, 40, 39, 8, 8

Но я ожидал: 39, 40, 39, 8, 39

Я думал, что wp_reset_postdata() установит глобальную $ post в основной запрос? Почему это все еще последнее сообщение из моего WP_Query?

Или я полностью не понял функцию wp_reset_postdata ();

EDIT: В документации ( https://codex.wordpress.org/Class_Reference/WP_Query ) я нашел следующее:

Примечание. Билет № 18408. Для запросов к сообщениям в админе используйте функцию get_posts (), так как wp_reset_postdata () может не работать должным образом.

Так что это кажется «нормальным». Но какова наилучшая практика, если я не должен использовать WP_Query в admin? На данный момент я храню глобальную $ post в локальной переменной и устанавливаю глобальную $ post обратно в старое значение после моего запроса.

 <?php global $post; $tempPost = $post; echo $post->ID.", "; $args = array('post_type' => 'xyz'); $loop = new WP_Query($args); if(!is_null($loop) && $loop->have_posts()) { while($loop->have_posts()) : $loop->the_post(); echo get_the_ID().", "; endwhile; } $post = $tempPost; echo $post->ID; ?> 

Но это решение не кажется правильным