2013-06-09 7 views
0

У меня 6 сообщений в Wordpress. Я пытаюсь отобразить последние 5 сообщений на странице. Вот мой код:Wordpress: Как добавить разбивку на страницы на страницу

<?php 
/* 
Template Name: Posts Template 
*/ 
?> 
//header... 
     <?php $the_query = new WP_Query(array('showposts' => 5, 'post_type' => 'post')); ?> 

     <?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?> 
      <h1><a href="<?php the_permalink(); ?>"><?php echo the_title(); ?></a></h1> 
     <?php endwhile; ?> 

     <?php posts_nav_link(); ?> 
//footer 

Pagination показывает мне, что есть 4 страницы, но, как я сказал, у меня есть только 6 постов, так как это возможно? Также Pagination кажется не работает правильно, не имеет значения, на какой странице я нахожусь, он всегда показывает последние 5 сообщений. Любая идея, что я делаю неправильно?

ответ

0

Попробуйте добавить к вашему запросу параметр paged. Вы также можете получить read of the documentation на эту тему, есть примеры. О, и, вероятно, более перспективно использовать posts_per_page вместо showposts.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

$the_query = new WP_Query(array(
    'posts_per_page' => 5, 
    'post_type' => 'post', 
    'paged' => $paged 
)); 
0

Добавьте этот код в functions.php

function posts_nav_link($query_object, $show_previous_posts_link = false, $show_next_posts_link = false) { 

    if(is_singular()) 
     return; 

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

    $paged = get_query_var('paged') ? absint(get_query_var('paged')) : 1; 
    $max = intval($query_object->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() && $show_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() && $show_next_posts_link) 
     printf('<li>%s</li>' . "\n", get_next_posts_link()); 

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

} 

И использовать posts_nav_link ($ the_query):

<?php 
/* 
Template Name: Posts Template 
*/ 
?> 
//header... 
     <?php $the_query = new WP_Query(array('showposts' => 5, 'post_type' => 'post')); ?> 

     <?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?> 
      <h1><a href="<?php the_permalink(); ?>"><?php echo the_title(); ?></a></h1> 
     <?php endwhile; ?> 

     <?php posts_nav_link($the_query); ?> 
//footer 
Смежные вопросы