previous_post_link() y next_post_link() con un tipo de entrada personalizada

13 dic 2012, 22:47:01
Vistas: 20K
Votos: 7

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(); ?>
0
Todas las respuestas a la pregunta 3
1

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.

6 oct 2013 15:34:26
Comentarios

Usuario 39075, por favor no deshagas las correcciones gramaticales realizadas por otros usuarios. Aquí valoramos el buen contenido y la calidad editorial. Gracias. Consulta la [ayuda] para más detalles.

brasofilo brasofilo
6 oct 2013 16:18:16
0

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ó.

7 mar 2018 21:13:51
5

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 ?>
13 dic 2012 22:50:54
Comentarios

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..

wesbos wesbos
13 dic 2012 22:52:42

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.

bueltge bueltge
13 dic 2012 22:55:52

Actualizaré con mi código...

wesbos wesbos
13 dic 2012 22:57:23

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

bueltge bueltge
13 dic 2012 23:08:15

¿Qué pasa si quiero el post anterior/siguiente de la misma categoría? ¿Qué necesito hacer con el código de arriba?

Jornes Jornes
1 oct 2022 07:34:05