Разбивка страниц разбивается на категории детей, отлично работает на родительской категории

У меня есть две родительские категории, а разбиение на страницы работает нормально на них – показ веб-страницы:

/parent-category-1/page/2/ … и т. д.
/parent-page/parent-category-2/page/2/ … и т. д.

Однако, когда я перехожу к категории детей, разбиение на страницы возвращает 404 – например:

/category/parent-category-1/child-category/page/2/ … etc = 404
/category/parent-category-2/child-category/page/2/ … и т.д. = 404

  • Я использую плагин WP-PageNavi для моей разбивки на страницы.
  • У меня нет никаких постоянных ссылок, установленных в моих параметрах permalinks.

parent-category-1 родительские категории для моих стандартных сообщений в блоге.
parent-category-2 родила категории для персонализированного типа сообщения.

Вот шаблон для сообщений в блоге под parent-category-1 (стандартный шаблон – category.php ):

 <div class="feed med"> <?php $paged = (get_query_var('page')) ? get_query_var('page') : 1; // FOR PAGINATION $args = array( 'post_type' => 'post', 'category__in' => ($cat), 'posts_per_page' => 5, 'page' => $paged, // FOR PAGINATION ); // FOR PAGINATION - hijack the $wp_query variable temporarily $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query($args); $second_query = new WP_Query( $args ); if ( $second_query->have_posts() ): while( $second_query->have_posts() ) : $second_query->the_post(); $titlechars = 45000; // Character Limit - rediculously large number to eliminate limit $posttitle = get_the_title(); $modtitle = substr($posttitle, 0, $titlechars); $contentchars = 120; // Character Limit $postcontent = get_the_excerpt(); $modcontent = substr($postcontent, 0, $contentchars); echo '<article>'; ?> <?php if( get_field('image') ): $attachment_id = get_field('image'); $size = 'customfeatins'; // (thumbnail, medium, large, full or custom size) $image = wp_get_attachment_image_src( $attachment_id, $size ); echo '<a href="' . get_permalink() . '"><img src="' . $image[0] . '" alt="' . get_the_title() .'" width="136" height="90" /></a>'; ?> <?php else : ?> <?php echo '<a href="' . get_permalink() . '"><img src="'. get_template_directory_uri() .'/assets/img/content/bf-default.gif" alt="bf-default" width="136" height="90" /></a>' ?> <?php endif; ?> <?php echo ' <div class="right-content"> <h3 class="purple"><a href="' . get_permalink() . '">' . $modtitle .'</a></h3> <p class="date">' . get_the_date() .'</p> <p>' . $modcontent . '&hellip; <a href="' . get_permalink() . '">More &rsaquo;</a></p> </div> </article>'; ?> <?php /* PageNavi at Bottom */ if (function_exists('wp_pagenavi')){wp_pagenavi();} // FOR PAGINATION - reassign the $wp_query variable to what is was originally and then reset the query back to start. $wp_query = null; $wp_query = $temp; endwhile; ?> <?php endif; wp_reset_postdata(); // to reset the loop ?> </div><!-- [END] feed--> 

И шаблон для пользовательских постов в parent-category-2 (настраиваемый шаблон – category-parent-category-2.php ):

 <div class="feed med no-border" id="the-posts"> <?php $paged = (get_query_var('page')) ? get_query_var('page') : 1; // FOR PAGINATION $category = get_the_category(); $args = array( 'post_type' => 'custom-post-type', 'posts_per_page' => 5, 'page' => $paged, // FOR PAGINATION 'category__in' => ($cat), ); // FOR PAGINATION - hijack the $wp_query variable temporarily $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query($args); $second_query = new WP_Query( $args ); if ( $second_query->have_posts() ): while( $second_query->have_posts() ) : $second_query->the_post(); $titlechars = 45; // Character Limit $posttitle = get_the_title(); $modtitle = substr($posttitle, 0, $titlechars); $contentchars = 120; // Character Limit $postcontent = get_the_excerpt(); $modcontent = substr($postcontent, 0, $contentchars); echo '<article '; echo ' ' . post_class('',false) . ' '; echo '>'; ?> <?php if( get_field('image') ): $attachment_id = get_field('image'); $size = 'customfeatins'; // (thumbnail, medium, large, full or custom size) $image = wp_get_attachment_image_src( $attachment_id, $size ); echo '<a href="' . get_permalink() . '"><img src="' . $image[0] . '" alt="' . get_the_title() .'" width="136" height="90" /></a>'; ?> <?php else : ?> <?php echo '<a href="' . get_permalink() . '"><img src="'. get_template_directory_uri() .'/assets/img/content/bf-default.gif" alt="bf-default" width="136" height="90" /></a>' ?> <?php endif; ?> <?php echo ' <div class="right-content"> <h3><a class="purple" href="' . get_permalink() . '">' . $modtitle .'</a></h3> <p class="date">' . get_the_date() .'</p> <p>' . $modcontent . '&hellip; <a href="' . get_permalink() . '">More &rsaquo;</a></p> </div> </article>'; ?> <?php /* PageNavi at Bottom */ if (function_exists('wp_pagenavi')){wp_pagenavi();} // FOR PAGINATION - reassign the $wp_query variable to what is was originally and then reset the query back to start. $wp_query = null; $wp_query = $temp; ?> <?php endwhile; endif; wp_reset_postdata(); // to reset the loop ?> </div><!-- [END] feed --> 

Я просматривал вопросы, размещенные здесь и через форумы wp – я не нашел ничего, что касалось бы дочерних категорий.

Любая помощь здесь будет очень признательна !!!

Заранее спасибо.

Наконец-то я смог добиться этого! Вот как:

То, что я неправильно понял (будучи WP noob и все …), заключается в том, что get_query_var('page') предназначен для страниц, а get_query_var('paged') – для сообщений. http://codex.wordpress.org/Function_Reference/get_query_varfor

Поэтому я заменил эти две строки

$paged = (get_query_var('page')) ? get_query_var('page') : 1; // FOR PAGINATION $paged = (get_query_var('page')) ? get_query_var('page') : 1; // FOR PAGINATION 'page' => $paged, // FOR PAGINATION

с этими двумя линиями

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // FOR PAGINATION $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // FOR PAGINATION 'paged' => $paged, // FOR PAGINATION

и удалил параметр 'posts_per_page' => 5, из моих шаблонов, а затем установил ограничение по почте в admin в разделе «Настройки»> «Чтение»

Однако это не было окончательным решением. Pagination все еще возвращал 404 в категории custom_post_type . Последнее исправление заключалось в добавлении этого патча: http://wordpress.org/support/topic/custom-types-category-pagination-404#post-1913902 к моему файлу functions.php.

Теперь разбиение на страницы прекрасно работает на категории и дочерние категории, на всех пост-типах.