Intereting Posts
разрешения локальной папки vs chown – соображения безопасности Прикрепленная навигация и wpadminbar Функция возврата короткого кода со ссылкой href внутри PHP Как построить функцию для применения фильтра? переименовать базу автора с url автора в WordPress не работает Получите детские условия текущего срока текущей должности Как получить источник пользовательского мета-изображения? Как импортировать ссылки на носители в базу данных WordPress по тому же URL-адресу Как отключить электронную почту подтверждения для WordPress для новых пользователей Получить категории дочерних категорий пользовательской таксономии? Вызов сообщений wp_query $ вызывает ошибку 500 Получить условия пользовательской таксономии для конкретного автора в шаблоне автора Наверх к функциям с использованием orderby custom field, а затем дата события Как разместить функцию из другого класса в аргументе add_action 2nde? post_row_actions для пользовательского типа сообщения

Pagination 404s по пользовательскому запросу

Основная проблема заключается в том, что каждая страница с разбивкой на страницы для моего блога переходит на страницу 404. / page / 2 /, / page / 3 / и т. д. Он работал нормально, но не сейчас. Я думаю, может быть, переход к 3.9 сделал это.

Вот некоторые из многих вещей, которые я пытался попытаться исправить. Конечный результат всех из них был одинаковым. Разбитые страницы 404'd.

  • деактивировано все плагины
  • удалять и восстанавливать постоянные ссылки несколько раз
  • в качестве значения по умолчанию вместо константы / postname
  • Убедитесь, что мои настройки чтения> Самые популярные страницы блога были установлены на тот же номер, что и мой цикл. (а также все больше и меньше тестировать)
  • Я попробовал два отдельных плагина навигации и стандартную разбивку по страницам WordPress (более старые сообщения), и каждый раз он 404s. попробовал использовать parse_query
  • попробовал paginate_links

Вот мой код (или ссылки на мой код):

home.php

<?php require dirname( __FILE__ ) . '/blog-page.php'; 

блог-page.php

 <?php /* Template Name: Blog Page - Custom */ get_header(); ?> <---CUSTOM CODE---> <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array( 'posts_per_page' => 5, 'post_type' => 'post', 'paged' => $paged ); $wp_query = new WP_Query($args); if($wp_query->have_posts()) : while($wp_query->have_posts()) : $wp_query->the_post(); ?> <---CUSTOM CODE---> endwhile; wp_reset_postdata();?> <div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div> <div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div> <?php endif; wp_reset_query(); 

Если это помогает, вот тестовый сайт, который я установил со страницей. Я оставил его с разбивкой по страницам WordPress по умолчанию.

У меня не хватило сил, чтобы попробовать. Мы ценим любые предложения.

Solutions Collecting From Web of "Pagination 404s по пользовательскому запросу"

Есть несколько вещей, которые я здесь не понимаю, но я попробую ответить им, когда я пойду.

У вас есть home.php, который, как я полагаю, является вашей главной страницей по умолчанию. У вас есть одна строка кода, и вы должны вызвать другой шаблон страницы. Вот код

  <?php require dirname( __FILE__ ) . '/blog-page.php'; 

В blog-page.php у вас есть полный шаблон страницы. Мой вопрос: зачем вы это делаете. Почему бы просто не добавить содержимое blog-page.php в home.php? Будет больше смысла.

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

 function posts_on_homepage( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'posts_per_page', '5' ); } } add_action( 'pre_get_posts', 'posts_on_homepage' ); 

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

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

Вам нужно будет посмотреть параметры разбивки на страницы WP_Qeury .

paged (int) – номер страницы. Показывать сообщения, которые обычно показываются только на странице X при использовании ссылки «Старые записи».

page (int) – номер страницы для статической главной страницы. Покажите сообщения, которые обычно отображаются на странице X на странице «Статическая страница».

Таким образом, ваш запрос должен выглядеть так для обычных страниц

 $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $query = new WP_Query( array( 'paged' => $paged ) ); 

И как это для статических страниц

 $paged = ( get_query_var('page') ) ? get_query_var('page') : 1; $query = new WP_Query( array( 'paged' => $paged ) ); 

Вы также дважды перезагружаете свои сообщения. Вы должны сделать это только один раз. BTW wp_reset_query(); неверно, он используется только для query_posts которые не должны использоваться. Вы должны использовать wp_reset_postdata();

Наконец, при использовании пользовательского запроса вы должны указать максимальное количество страниц для next_posts_link с помощью параметра $max_pages , иначе он не удастся.

  next_posts_link( 'Older Entries', $the_query->max_num_pages ); 

Вот пример правильного рабочего пользовательского запроса, как из кода

 <?php // set the "paged" parameter (use 'page' if the query is on a static front page) $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // the query $the_query = new WP_Query( 'cat=1&paged=' . $paged ); ?> <?php if ( $the_query->have_posts() ) : ?> <?php // the loop while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php the_title(); ?> <?php endwhile; ?> <?php // next_posts_link() usage with max_num_pages next_posts_link( 'Older Entries', $the_query->max_num_pages ); previous_posts_link( 'Newer Entries' ); ?> <?php // clean up after our query wp_reset_postdata(); ?> <?php else: ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> 

Надеюсь, это прояснит вашу проблему