¿Cómo usar wp_pagenavi() con wp_query personalizado?

17 feb 2011, 06:21:37
Vistas: 50.7K
Votos: 6
<?php
/*
Template Name: Projects
*/
?>

<?php get_header();?>

    <section id="content">
        <section id="main">

            <?php
                $loop = new WP_Query(array('post_type' => 'projects', 'posts_per_page' => 4));
                $i=1;
                while ( $loop->have_posts() ) : $loop->the_post();
            ?>

            <article class="post<?php if($i%2 == 0) { echo ' right'; }; $i++; ?>" id="post-<?php the_ID(); ?>">
                <h2><?php the_title(); ?></h2>
                <section class="entry">
                    <?php the_excerpt(); ?>
                </section>
            </article>

            <?php
                endwhile;
                wp_pagenavi();
            ?>

            <section id="map">
                <img src="<?php bloginfo('template_url') ?>/images/interactive-map.jpg" alt="Mapa Interactivo" title="Mapa Interactivo" />
            </section>
        </section>

<?php get_sidebar(); ?>

    </section>

<?php get_footer(); ?>

Tengo pagenavi configurado justo después del endwhile. Sin embargo, no está funcionando. ¿Alguien sabe cómo puedo hacer que funcione?

4
Comentarios

ver - http://wordpress.stackexchange.com/questions/4696/pagination-not-working-with-custom-loop (básicamente necesitas tomar el control del global $wp_query y usarlo en lugar de $loop

onetrickpony onetrickpony
17 feb 2011 07:01:36

Seguí las instrucciones de allí y ahora aparece la navegación, pero cuando voy a la página 2, obtengo un error. Aquí está el pastebin de lo que tengo. Si puedes echarle un vistazo y decirme si notas algo mal, te estaré eternamente agradecido. Gracias. http://pastebin.com/RMZaE6Pi

J82 J82
17 feb 2011 07:52:56

¿qué error estás recibiendo?

Bainternet Bainternet
17 feb 2011 11:45:56

@One Trick Pony: ¿Puedes mover tu comentario a una respuesta para que John pueda aceptarla? Quizás incluir mi comentario en la respuesta referenciada, porque con la nueva versión de WP-Pagenavi puedes pasar un argumento query. John hizo una pregunta de seguimiento para hacer funcionar la paginación.

Jan Fabry Jan Fabry
17 feb 2011 16:29:28
Todas las respuestas a la pregunta 2
10
19
wp_pagenavi( array( 'query' => $loop ) );

debería funcionar con el código anterior. No secuestres la consulta principal si puedes evitarlo.

17 feb 2011 16:28:20
Comentarios

Mi fuente para esto: http://plugins.trac.wordpress.org/browser/wp-pagenavi/trunk/core.php#L3

John P Bloch John P Bloch
17 feb 2011 16:29:13

Efectivamente, la versión de desarrollo de WP Pagenavi (2.74-alpha) soporta esto.

scribu scribu
17 feb 2011 16:34:08

Oh, no me di cuenta de que esta era la versión de desarrollo. ¡Ups!

John P Bloch John P Bloch
17 feb 2011 16:37:41

¿es esto posible con paginate_links()?

onetrickpony onetrickpony
17 feb 2011 16:46:15

paginate_links es algo más básico. En lugar de darle un objeto de consulta, le indicas cuál es el número máximo de páginas, cuál es la página actual y algunos otros parámetros (como el formato de la url, etc.)

John P Bloch John P Bloch
17 feb 2011 16:56:16

@John P Bloch: Acabo de lanzarlo: http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html :)

scribu scribu
17 feb 2011 17:09:58

@scribu: lo probé con un tipo de publicación personalizado y la paginación no obtiene la página activa si es > 1, cuando los enlaces permanentes están activos. Tal vez esté relacionado con esto: http://wordpress.stackexchange.com/questions/9537/pretty-paged-permalinks-in-custom-post-type-loop

onetrickpony onetrickpony
17 feb 2011 17:57:10

¿Incluiste 'paged'? Si es así, deberías abrir una nueva pregunta, con el código de ejemplo adjunto. Además, no culpes a pagenavi; solo genera enlaces. :)

scribu scribu
17 feb 2011 18:01:59

Sí. No tiene sentido abrir una nueva pregunta ya que ya no uso el plugin, solo señalo que no es totalmente compatible con CPT. Deberías añadir otro argumento a wp_pagenavi(), como 'current' donde puedas pasar la página actual, por ejemplo get_permalink()

onetrickpony onetrickpony
17 feb 2011 19:22:19

@john: tengo el mismo problema al usar offset en una consulta personalizada de publicaciones. ¡Por favor, ayuda! $loop = new WP_Query(array("paged=".get_query_var('paged')."&offset=1"));

Gowri Gowri
3 jun 2011 10:27:24
Mostrar los 5 comentarios restantes
0
-1
<?php       // Paginación
        if(function_exists('wp_pagenavi')) :
            wp_pagenavi( array( 'query' => $blog_posts_query ) );
        else : ?>
            <div class="navigation">
                <div class="alignleft"><?php previous_posts_link('&laquo; Entradas anteriores') ?></div>
                <div class="alignright"><?php next_posts_link('Entradas siguientes &raquo;') ?></div>
            </div>
<?php       endif;

                // Restaurar los datos originales del Post
                wp_reset_postdata(); ?>
23 mar 2018 15:58:01