WordPress пользовательская таксономия нумерация страниц не работает - PullRequest
5 голосов
/ 26 апреля 2011

Я использую плагин WP PageNavi для нумерации страниц. Эта конкретная проблема, связанная с невозможностью разбиения страницы taxonomy-portflio-category.php на страницы, также является проблемой, когда WP PageNavi выключен.

У меня было чертовски много времени, чтобы заставить страницы работать на главной странице и на странице шаблона страницы, но я заставил их работать. Вот их код:

page-home.php (используется в качестве шаблона страницы на статической титульной странице, называемой «Домой»)

$paged = 1;
if ( get_query_var('paged') ) $paged = get_query_var('paged');
if ( get_query_var('page') ) $paged = get_query_var('page');
$i = 0;
$loop = new WP_Query( array( 'post_type' => 'portfolio', 'paged' => $paged, 'posts_per_page' => 24 ) );
while ( $loop->have_posts() ) : $loop->the_post();
// output
$i++; endwhile;
if ( function_exists( 'wp_pagenavi' ) ) {
    wp_pagenavi( array( 'query' => $loop ) );
    wp_reset_postdata();
}

Нумерация страниц работает!

page-portfolio.php (используется в качестве шаблона страницы на странице под названием «Работа»)

$i = 0;
$loop = new WP_Query( array( 'post_type' => 'portfolio', 'paged' => get_query_var( 'paged' ), 'posts_per_page' => 24 ) );
while ( $loop->have_posts() ) : $loop->the_post();
// output
$i++; endwhile;
if ( function_exists( 'wp_pagenavi' ) ) {
    wp_pagenavi( array( 'query' => $loop ) );
    wp_reset_postdata();
}

Нумерация страниц работает!

taxonomy-portfolio-category.php (используется для отображения разделов портфолио, например, печати, фотографии и т. Д.)

$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
global $wp_query;
query_posts( array_merge( $wp_query->query, array( 'posts_per_page' => 2 ) ) );
if (have_posts()) : while ( have_posts() ) : the_post();
// output
endwhile; endif;
if ( function_exists( 'wp_pagenavi' ) ) {
    wp_pagenavi();
}

Страница 1 (/ портфолио / интерактив /) выглядит великолепно! Он определенно публикует только 2 элемента и вычисляет правильное количество страниц разбиения на страницы. Но когда вы нажимаете на страницу 2, 3 или 4 (/ портфолио / интерактив / страница / 2 /), сайт по умолчанию использует index.php и показывает «Страница не найдена». Пагинация не удалась!

Надеюсь, я смогу решить это в ближайшее время. Я видел МНОГО людей с такой же проблемой нумерации страниц на пользовательских страницах таксономии, но без твердых решений. Пожалуйста, помогите!

Ответы [ 5 ]

2 голосов
/ 17 декабря 2015

Вам нужно установить количество постов на странице до 24 на странице Настройки -> Чтение в WP admin.Надеюсь, это кому-нибудь поможет.

1 голос
/ 08 июля 2016

Я пытался использовать WP-Pagenavi, но он никогда не работал, поэтому я использовал нумерацию страниц из Wordpress самостоятельно, я использовал функцию Twentyfourteen_paging_nav () Twentyfourteen, потому что у него есть страница таксономии, вот код:

if ( ! function_exists( 'twentyfourteen_paging_nav' ) ) :
function twentyfourteen_paging_nav() {
global $wp_query, $wp_rewrite;

// Don't print empty markup if there's only one page.
if ( $wp_query->max_num_pages < 2 ) {
    return;
}

$paged        = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
$pagenum_link = html_entity_decode( get_pagenum_link() );
$query_args   = array();
$url_parts    = explode( '?', $pagenum_link );

if ( isset( $url_parts[1] ) ) {
    wp_parse_str( $url_parts[1], $query_args );
}

$pagenum_link = remove_query_arg( array_keys( $query_args ), $pagenum_link );
$pagenum_link = trailingslashit( $pagenum_link ) . '%_%';

$format  = $wp_rewrite->using_index_permalinks() && ! strpos( $pagenum_link, 'index.php' ) ? 'index.php/' : '';
$format .= $wp_rewrite->using_permalinks() ? user_trailingslashit( $wp_rewrite->pagination_base . '/%#%', 'paged' ) : '?paged=%#%';

// Set up paginated links.
$links = paginate_links( array(
    'base'     => $pagenum_link,
    'format'   => $format,
    'total'    => $wp_query->max_num_pages,
    'current'  => $paged,
    'mid_size' => 1,
    'add_args' => array_map( 'urlencode', $query_args ),
    'prev_text' => __( '&larr; Previous', 'twentyfourteen' ),
    'next_text' => __( 'Next &rarr;', 'twentyfourteen' ),
) );

if ( $links ) :

?>

<nav class="pagination-contaner" role="navigation">
    <h1 class="screen-reader-text"><?php _e( 'Posts navigation', 'twentyfourteen' ); ?></h1>
    <ul class="pagination">
        <?php echo $links; ?>
    </ul><!-- .pagination -->
</nav><!-- .navigation -->
<?php
endif;
}
endif;
0 голосов
/ 11 января 2016

Я хотел бы поделиться следующим решением (добавьте этот код к functions.php в вашей теме):

function fix_taxonomy_pagination ( $query ) {
  // not an admin page and it is the main query
  if (!is_admin() && $query->is_main_query()){

    if(is_tax()){
      // where 24 is number of posts per page on custom taxonomy pages
      $query->set('posts_per_page', 24);

    }
  }
}
add_action( 'pre_get_posts', 'fix_taxonomy_pagination' );

источник

0 голосов
/ 28 декабря 2015

Может быть, вам нужно включить поиск, чтобы включить нумерацию страниц

При объявлении пользовательской таксономии следует отключить поиск, исключая.

exclude_from_search => false

Это исправило мою проблему.

0 голосов
/ 10 апреля 2012

Я столкнулся с подобной проблемой, мне потребовались часы поиска в Google!Я наконец нашел решение.Добавьте следующий код в functions.php в папке вашей темы:

$option_posts_per_page = get_option( 'posts_per_page' );
add_action( 'init', 'my_modify_posts_per_page', 0);
function my_modify_posts_per_page() {
    add_filter( 'option_posts_per_page', 'my_option_posts_per_page' );
}
function my_option_posts_per_page( $value ) {
    global $option_posts_per_page;
    if ( is_tax( 'portfolio-category') ) {
        return 2;
    } else {
        return $option_posts_per_page;
    }
}

URL-адрес решения

...