Intereting Posts
localhost на iPhone не загружает изображения Почему тема вставляет раздел комментариев, если я не сбрасываю свой пользовательский WP_Query? Изменить ссылку на архив для отдельного сообщения Требуемая версия PHP: 5.3.3 – Версии найденные: 5.2.17 … Как и где выполнить обновление до 5.33 Теги сценариев очистки Программно выбрать фоновый цвет для изображения? Где я могу найти тему с большим баннером Запуск javascript в дочерней теме. Работает в jsfiddle Пустое пространство в начале тега <title>? Годовой архив перенаправления структуры перенаправления на главную страницу Ресурсы для полного новичка, чтобы учиться профессионально работать с WordPress Наследовать скрипты от родительской до детской Архивная страница отфильтрованных сообщений Удалите всю тему CSS & JS из wp_head (но только для 1-страничного шаблона) Получить текст customizeAction по умолчанию для раздела с помощью API-интерфейса Customizer

Отображение разбивки на дочерние категории 404

Может ли кто-нибудь понять, почему просмотр страниц в моих дочерних категориях приводит к 404, когда один и тот же $paged код отлично подходит для моего индексного файла? Это внутри моей категории-15.php (это влияет на все дочерние категории по категории родительской категории 15).

  <?php $PostNum = 1; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'cat' => $cat, 'posts_per_page' => 2, 'orderby' => 'date', 'order' => 'ASC', 'paged' => $paged, ); $CustomQueryIdentifier = new WP_Query($args); ?> <h1><a href="<?php the_permalink(); ?>"><?php the_category(' '); ?></a></h1> <?php if ( $CustomQueryIdentifier->have_posts() ) : while ( $CustomQueryIdentifier->have_posts() ) : $CustomQueryIdentifier->the_post(); ?> <div class="container"> <p class="number"><a href="<?php the_permalink(); ?>"><?php $postnumber = $CustomQueryIdentifier->current_post; echo $postnumber+1 ?></a></p> <?php the_content(''); ?> </div> <?php endwhile; endif; ?> <div class="navigation"> <?php next_posts_link('&laquo; Older Entries', $CustomQueryIdentifier->max_num_pages) ?> <?php previous_posts_link('Newer Entries &raquo;') ?> </div> <?php wp_reset_postdata(); ?> 

Здесь много вопросов относительно разбивки на страницы, это определенно один из наименее понятых аспектов того, как WordPress работает внутри.

Чтобы понять, почему вы получаете 404s, мы начнем с изучения ссылки Action в Codex, чтобы увидеть процесс WordPress для каждого запроса.

Процесс начинается с загрузки плагинов и темы и выполнения некоторой инициализации для настройки всего и т. Д. И т. Д. Часть, которую мы заинтересованы, начинается с parse_request , когда WordPress определяет, какую страницу запрашивается, и parse_query , когда переменные запроса установлены для генерации основного запроса .

Следующее действие – pre_get_posts , что дает нам возможность изменить основной запрос. Здесь вы хотите выполнить свой собственный код, чтобы изменить основной запрос, например, установив другое значение posts_per_page (подсказка, подсказка).

Затем мы достигаем действия wp после запуска основного запроса и, наконец, важного бита информации в этом объяснении – действия template_redirect . Это действие, в котором WordPress определяет, какой шаблон загрузить, основываясь на результатах основного запроса. Если это категория, загружается шаблон категории, если это архив, загружается шаблон архива, а если он 404 – загружается шаблон 404 .

Да, жирный текст означает, что последняя часть важна, и, надеюсь, мы начинаем понимать проблему. WordPress решил, что запрос составляет 404, прежде чем ваш шаблон будет загружен. Независимо от результатов, которые вы получаете при запуске запросов в шаблоне, не имеют значения. Если основной запрос не возвращает сообщение (ы), это 404.

В вашем случае вы получаете 404, потому что основной запрос загружает 5 сообщений на страницу, и у вас только 3, нет второй страницы в отношении основного запроса.

(Но подождите минутку, вы говорите, почему это работает на некоторых страницах, а не на других? Да, достаточно смешно, что это не всегда приведет к 404, например, когда запрос является уникальной страницей.)

Решение проблемы вашей категории было намечено ранее в истории – если вы хотите изменить запрос, используйте pre_get_posts до pre_get_posts основного запроса.

 // modify main query for category ID 15 and all its children function wpd_category_query( $query ) { if( $query->is_main_query() && $query->is_category() ) { $parent = 15; // your parent category $categories = get_term_children( $parent, 'category' ); $categories[] = $parent; if( is_category( $categories ) ) { $query->set( 'posts_per_page', 2 ); } } } add_action( 'pre_get_posts', 'wpd_category_query' );