¿Cómo usar wp_pagenavi() con wp_query personalizado?
<?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?
Mi fuente para esto: http://plugins.trac.wordpress.org/browser/wp-pagenavi/trunk/core.php#L3

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

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

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: Acabo de lanzarlo: http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html :)

@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

¿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. :)

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()

<?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('« Entradas anteriores') ?></div>
<div class="alignright"><?php next_posts_link('Entradas siguientes »') ?></div>
</div>
<?php endif;
// Restaurar los datos originales del Post
wp_reset_postdata(); ?>
