2014-10-20 13 views
0

Есть два пользовательских типа сообщений, которые я просматриваю на странице, называемой новостями. Когда я перехожу к постраничным результатам и нажимаю на соответствующую страницу, я получаю страницу 404. Перешли через изменение постоянных ссылок, и это все еще не работает. Также обратите внимание на то, чтобы очистить постоянные ссылки и сделали это. Код подкачки также ниже, но я не думаю, что это так, поскольку он отлично работает для страницы поиска. Может быть .htaccess?WordPress pagination 404 page

код запроса является:

$args = array(
    'post_type' => array ('news', 'events')); 
    query_posts($args); ?> 

код Разбивка является:

if(is_singular()) 
    return; 

global $wp_query; 

/** Stop execution if there's only 1 page */ 
if($wp_query->max_num_pages <= 1) 
    return; 

$paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1; 
$max = intval($wp_query->max_num_pages); 

/** Add current page to the array */ 
if ($paged >= 1) 
    $links[] = $paged; 

/** Add the pages around the current page to the array */ 
if ($paged >= 3) { 
    $links[] = $paged - 1; 
    $links[] = $paged - 2; 
} 

if (($paged + 2) <= $max) { 
    $links[] = $paged + 2; 
    $links[] = $paged + 1; 
} 

echo '<div class="navigation"><ul>' . "\n"; 

/** Previous Post Link */ 
if (get_previous_posts_link()) 
    printf('<li>%s</li>' . "\n", get_previous_posts_link()); 

/** Link to first page, plus ellipses if necessary */ 
if (! in_array(1, $links)) { 
    $class = 1 == $paged ? ' class="active"' : ''; 

    printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link(1)), '1'); 

    if (! in_array(2, $links)) 
     echo '<li>…</li>'; 
} 

/** Link to current page, plus 2 pages in either direction if necessary */ 
sort($links); 
foreach ((array) $links as $link) { 
    $class = $paged == $link ? ' class="active"' : ''; 
    printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link($link)), $link); 
} 

/** Link to last page, plus ellipses if necessary */ 
if (! in_array($max, $links)) { 
    if (! in_array($max - 1, $links)) 
     echo '<li>…</li>' . "\n"; 

    $class = $paged == $max ? ' class="active"' : ''; 
    printf('<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url(get_pagenum_link($max)), $max); 
} 

/** Next Post Link */ 
if (get_next_posts_link()) 
    printf('<li>%s</li>' . "\n", get_next_posts_link()); 

echo '</ul></div>' . "\n"; 

Любая помощь будет большим.

ответ

0

Может быть две вещи:

  1. , возможно, придется использовать функцию paginate_links.
  2. Вы не тянете в атрибут выведенной страницы.

Один:

См Paginate Link Codex Page.

<?php 
global $wp_query; 

$big = 999999999; // need an unlikely integer 

echo paginate_links(array(
    'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))), 
    'format' => '?paged=%#%', 
    'current' => max(1, get_query_var('paged')), 
    'total' => $wp_query->max_num_pages 
)); 
?> 

или два: См Pagination Codex Page.

Вы должны сделать следующее:

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array(
    'posts_per_page' => 3, 
    'paged' => $paged 
); 

query_posts($args); 
?> 

$ выгружаемого = (get_query_var ('страничной'))? get_query_var ('paged'): 1; - важная линия.

Смежные вопросы