Intereting Posts
Как я могу получить URL-адрес? Есть ли какая-либо инфраструктура разработки плагинов Обнаружение страницы архива и категории Как показать черновики в списке wp_dropdown_pages? Удалите -2 из URL; нет дубликатов страниц, нет изображений, нет страниц в корзине Как вы получаете эскизы, чтобы отображаться в редакции администратора? Эхо-строка в нижнем колонтитуле панели администратора рядом с версией нет Пустое мета-окно возвращает publishdate, если значение не задано? Могу ли я ограничить доступность категории? Что произойдет, если я запустил 2 разных плагина Cache / Minify одновременно Как я могу ограничить длину символа в выдержке? Удалите <p> </ p> после изображений данные пользовательских сообщений – как query_vars Фильтр: вы когда-либо использовали бы его, когда $ _GET доступен, и вам не нужен URL-адрес «Pretty»? Регенерировать автоматические выдержки после обновления многих сообщений

Почему «pre_get_posts» не имеет эффекта?

Я пытаюсь использовать pre_get_posts в первый раз без каких-либо успехов. Это очень простой фрагмент кода на индексной странице в противном случае пустой темы, чтобы получить зависание крючка действия:

function just_one( $query ) { $query->set( 'posts_per_page', 1 ); } add_action( 'pre_get_posts', 'just_one' ); 

Из того, что я прочитал, я не вижу ничего плохого в этом, но когда я запустил это ниже:

 echo get_query_var( 'posts_per_page' ); 

он отображает значение по умолчанию «10», а не «1», которое я ожидал. Я делаю что-то неправильно? Страница индекса полностью пуста, кроме вышеуказанного кода. Приветствия за любую помощь.

Solutions Collecting From Web of "Почему «pre_get_posts» не имеет эффекта?"

… Это очень простой фрагмент кода на индексной странице в противном случае пустой темы …

Если вы запускаете этот код на индексной странице своей темы и ожидаете, что он будет выполнять основной запрос, вы добавите действие слишком поздно. Основной запрос выполняется задолго до загрузки шаблона темы. Вам нужно будет поместить этот код в functions.php в свою активную тему или в плагин и использовать некоторую условную логику, чтобы убедиться, что она работает только там, где вы этого хотите. Например…

 function just_one( $query ) { if ( $query->is_main_query() && $query->is_front_page() ) { $query->set( 'posts_per_page', 1 ); } } add_action( 'pre_get_posts', 'just_one' ); 

Я не знаю, каково должно быть условие if . См. Страницу Codex, уже связанную с доступными условиями.

Попробуйте это вместо этого. Вам всегда нужно проверить main_query

 function just_one( $query ) { if ( $query->is_main_query() ) { $query->set( 'posts_per_page', 1 ); } } add_action( 'pre_get_posts', 'just_one' );