previous_post_link() y next_post_link() con un tipo de entrada personalizada
Estoy en single-work.php
para un tipo de entrada personalizada llamado work
, dentro del bucle.
Intento crear dos enlaces al post anterior y siguiente.
Usando este código:
<?php previous_post_link(); ?>
y
<?php next_post_link(); ?>
Pero no aparece nada. ¿Me estoy perdiendo algo?
Aquí está mi código, muy sencillo:
<?php get_header(); ?>
<div class="full" >
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php next_post_link('%link', 'Siguiente entrada »'); ?>
<?php next_post_link('%link', 'Siguiente entrada »'); ?>
<?php endwhile; // fin del bucle. ?>
</div><!--/full-->
<?php get_footer(); ?>
Lo que veo en tu código es que los enlaces de siguiente publicación y publicación anterior aparecen dentro del bucle while, cuando no deberían estar dentro del bucle. Debería verse así:
<?php get_header(); ?>
<div class="full" >
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php endwhile; // fin del bucle. ?>
<?php next_post_link('%link', 'Siguiente publicación »'); ?>
<?php next_post_link('%link', 'Siguiente publicación »'); ?>
</div><!--/full-->
<?php get_footer(); ?>
O bien, puedes encontrarlo detallado aquí.
En la publicación anterior encontré paginación numérica, pero aún así explica en gran detalle cómo funciona exactamente la paginación.

Lee la documentación.
Esta función no funcionará (fallará silenciosamente) si mysql.trace_mode está habilitado en tu php.ini. Si no puedes editar ese archivo, intenta agregar
ini_set( 'mysql.trace_mode', 0 );
en el archivo functions.php de tu tema.
Eso podría resolver tu problema, a mí me funcionó.

Las funciones son correctas; establece los parámetros
<?php next_post_link('%link', 'Siguiente entrada »'); ?>
<?php next_post_link('%link', 'Siguiente entrada »'); ?>
Bueno, sin ver tu código, es difícil decir por qué. ¿Hay algún error o advertencia de PHP?
Actualización
Un pequeño ejemplo
<?php query_posts( array( 'post_type' => 'page', 'post_status' => 'publish' ) ) ?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
<!-- haz cosas aquí -->
<div id="nav-single">
<div class="left"><?php previous_post_link(); ?></div>
<div class="right"><?php next_post_link(); ?></div>
</div>
<?php endwhile; // fin del bucle. ?>
<?php wp_reset_query(); ?>
<?php else : ?>
<!-- haz otras cosas aquí -->
<?php endif ?>

Esos parámetros son opcionales, incluirlos no ayuda en nada. No hay errores de PHP ni nada, por eso me está costando resolverlo, simplemente no hace nada..

Sí, pero funciona en muchas plantillas individuales en muchos temas. Es difícil sin el código fuente de la plantilla que vemos, saber dónde está el problema. También es posible que un plugin o funciones se enganchen dentro del loop y rompan las etiquetas de la plantilla.

¿Y el CPT está dentro del loop predeterminado? En tu código hay un loop predeterminado, no varios para CPT. Pero, sí es posible enlazar desde un CPT dentro del loop y agregar el CPT.
