Cómo agregar paginación a la consulta

3

En el siguiente script, estoy llamando desde archive.php a functions.php para recuperar una lista de publicaciones que se han marcado en una categoría reservada para mis publicaciones de "blog". Estoy enumerando estas publicaciones en resumen con el recuento determinado por una opción llamada "blog_count".

Necesito agregar la paginación a esta función para que el blog_count determine el recuento de páginas inicial, no el número total de publicaciones de blog devueltas. ¿Qué cambios debo realizar en la llamada a get_posts () para incluir esta paginación?

He intentado agregar 'offset' = > 3 por ejemplo, pero solo enumera las publicaciones de desplazamiento, no las anteriores.

//called from archive.php to handle posts placed into "blog" category
if(is_category())
{
    if(get_option('inner_blog') && (get_query_var('cat') == get_option('blog_cat')))
    {
        //call function to output posts as in a blog format
        get_blog_links();
    } 
    else 
    { 
        //just a standard summary listing of posts in this category
        get_category_links();
    }
}?> 


//function inside functions.php 
function get_blog_links(){
    $hasChildCats = get_term(get_query_var( 'cat' ), 'category');
    if($hasChildCats->count <= 0) return;
    global $post;
    $cat = get_query_var( 'cat' );
    //set the target category and initial page post count
    $args = array('cat' => "$cat",'post__not_in' => get_option('sticky_posts'),'numberposts' => get_option('blog_count'));
    $myposts = get_posts($args);echo '<div class="blog"></div>'; 

    //loop over the resultset
    foreach($myposts as $idx=>$post){ ?>
    <article><h3 class="blogTitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
    <?php 
    setup_postdata($post);
    echo '<address>Posted on: <time datetime="'.get_the_time('Y-m-d').'">'.get_the_date().'</time> By: '.get_the_author().'</address>';
    if(has_post_thumbnail() && get_option('cb2_show_thumbs')) the_post_thumbnail('thumbnail', array('class' => 'alignright', 'style' => 'margin:10px;'));

    get_blog_excerpt();

    if(has_post_thumbnail() && get_option('show_thumbs')) echo '<div style="clear:both">&nbsp;</div>';?></article>
    <?php } echo '</div></div>';
    ?>
    <div class="navigation">
        <span class="alignleft"><?php next_posts_link('&laquo; Older Entries') ?></span>
        <span class="alignright"><?php previous_posts_link('Newer Entries &raquo;') ?></span>
    </div>
    <?php
 }
    
pregunta N2Mystic 22.04.2012 - 22:41

1 respuesta

1

En lugar de usar next_posts_link y previous_posts_link , intente paginate_links . Le permite especificar la página actual y el recuento total de páginas.

Por ejemplo:

echo paginate_links( array(
    'base' => add_query_arg( 'cpage', '%#%' ),
    'format' => '',
    'prev_text' => __('&laquo;'),
    'next_text' => __('&raquo;'),
    'total' => ceil($total / $items_per_page),
    'current' => $page
));
    
respondido por el getWeberForStackExchange 26.05.2012 - 01:12

Lea otras preguntas en las etiquetas