Intereting Posts
Невозможно заблокировать файлы wordpress readme Запрос $ wpdb-> не может вставлять данные Как добавить кнопку мультимедиа для пользователей, которые не имеют возможности «upload_files»? edit_form_after_editor только на страницах редактирования сообщений Удаление существующего пункта меню Предотвращение дублирования привязки при использовании wp_insert_post Установка WordPress самостоятельно удаляется при перезагрузке сервера. Таблицы SQL тоже ушли! Дайте редакторам доступ к определенному плагину – включите «admin.php» в «edit.php» добавить мета-описание в категории и продукты в wordpress Как переупорядочить страницы в массе Падение портфеля подкатегорий Список всех пользователей и записей текущей недели циклическая ошибка всей записи в памяти Создание плагина, уникального для того, чтобы не противоречить плагинам с тем же именем Отобразить почтовую карту на пустой / новой странице

Получить результаты из основного wp_query

Я хотел бы изменить главную wp_query а затем отправить результаты по электронной почте в формате PDF или HTML.

Мне удалось фильтровать wp_query с помощью пользовательских фильтров и некоторого кода, подобного этому внутри моей функции плагинов:

 add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' ); function foo_modify_query_exclude_category( $query ) { if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) ) $query->set( 'cat', '-5' ); // // CALL preparePDF($wp_query) here in order to prepare the PDF // } 

Результаты успешно фильтруются и представляются пользователю.

На этом этапе (или даже перед представлением результатов пользователю я хотел бы сделать следующее (я на самом деле пытаюсь сделать это внутри той же функции, которую я использовал для фильтрации основного запроса:

Я создал новую функцию, в которой wp_query основной параметр wp_query как параметр: и я пытаюсь распечатать результаты:

 function preparePDF($wp_query) { var_dump($wp_query); // The Loop if ( $wp_query->have_posts() ) { echo '<ul>'; while ( $wp_query->have_posts() ) { $wp_query->the_post(); echo '<li>' . get_the_title() . '</li>'; } echo '</ul>'; } else { // no posts found echo 'no posts found'; } } 

К сожалению, даже если мой запрос кажется правильным, когда я использую var_dump , я не получаю никаких результатов.

Могу ли я как-то исправить это? Я делаю это неправильно?

Похоже, вы вызываете preparePDF( $wp_query ) внутри вашего обратного вызова, но $wp_query не определен и глобальная $wp_query не должна быть доступна там без global $wp_query .

Попробуйте вместо этого preparePDF( $query ) и используйте wp_reset_postsdata() для восстановления глобального объекта $post .

Еще одна важная вещь заключается в том, что вы должны запустить вашу preparePDF() после того, как WP_Query записи из базы данных. Поэтому не используйте крюк pre_get_posts , вместо этого используйте более поздний. Но этот крючок зависит от того, что вы хотите делать с сообщениями. Я также не понимаю, что вы готовите с помощью своей функции preparePDF() .

Не забудьте использовать WP_DEBUG для вашей установки dev, чтобы поймать любые ошибки PHP, предупреждения и уведомления. Проверьте, например, Отладка в WordPress в Codex.