Intereting Posts
Является ли «_s» на этом `sprintf (__ ('Page% s', '_s'), max ($ paged, $ page))` просто ссылается на текстовый домен? Показать меню только if_page Удалить эхо из короткого кода Невозможно отредактировать style.css с панели администратора, потому что шаблон ищет style.min.css Проблема с rewrite_rules wp_trash_post – утечка памяти Сломанные изображения в медиа-библиотеке Loop, который отображает первое сообщение каждого доступного настраиваемого типа сообщений? Пользовательский тип сообщения и пользовательская таксономия с использованием перезаписи URL-адресов, но шаблон не Проблемы с страницей блога передать строку запроса на url для фильтрации медиа Как я могу загружать загруженные изображения в загрузку редактора с помощью HTTPS? пользовательские типы сообщений, wp_get_archives и add_rewrite_rule Использование и сохранение настраиваемых раскрывающихся списков в профилях пользователей Что может вызвать POST для wp-admin / async-upload.php для возврата JSON> и <HTML?

Почему «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' );