Solución para next_post_link() no funciona en posts de tipos personalizados

16 ago 2013, 18:39:40
Vistas: 18.8K
Votos: 7

No logro que esto funcione de ninguna manera - este es el código en mi archivo single-osu_work.php que se usa para este tipo de contenido, pero no consigo que aparezcan los enlaces de posts siguiente y anterior - ¿puedes ver algún problema? He intentado poner los enlaces de paginación dentro del loop pero sigue sin funcionar.

Gracias,

Osu

if (have_posts()) : while (have_posts()) : the_post(); ?>
    <article <?php post_class(); ?> id="post-<?php the_ID(); ?>">
        <h1 id="mainheading"><?php the_title(); ?></h1>
        <?php the_content(); ?>
        <footer class="postmetadata">Fecha: <?php the_date('Y'); ?></footer>
    </article>
    <?php endwhile;
else : ?>
    <article id="nada">
        <h2 id="mainheading">No se encontró nada</h2>
        <p>Lo sentimos, pero has llegado a una página que no existe.</p>
        <p>Por favor usa la función de búsqueda o continúa navegando.</p>
        <?php echo get_search_form(); ?>
    </article>  
<?php endif; ?>

    <div class="next-posts"><?php next_post_link('%link', 'Entrada más nueva &gt;', true) ?></div>
    <div class="prev-posts"><?php previous_post_link('%link', '&lt; Entrada anterior', true) ?></div>
    <div class="clear">&nbsp;</div>
4
Comentarios

Deberían estar dentro del bucle (loop) - quizás quieras actualizar tu código.

vancoder vancoder
16 ago 2013 19:40:42

Desafortunadamente, ya probé eso y no funciona, los enlaces de navegación no aparecen, solo el marcado div alrededor de ellos...

Osu Osu
18 ago 2013 12:29:35

Actualización: Puedo hacer que funcione si lo muevo dentro del bucle pero solo usando next_post_link() y no next_post_link('%link', 'Entrada más nueva >', true) - ¿alguna idea de por qué podría ser? ¿Es porque es un tipo de entrada personalizada (custom post type) y no puedes renombrar los enlaces de paginación? Me gustaría renombrar el enlace si es posible. Gracias

Osu Osu
18 ago 2013 12:33:12

Simplemente elimina la parte "true". Eso funcionó para mí.

Pete Pete
1 ene 2017 06:23:46
Todas las respuestas a la pregunta 3
1

Bien, encontré la solución en cuanto a hacer que los enlaces aparezcan, sin embargo, necesité eliminar el argumento 'true' para solo navegar entre publicaciones dentro de la misma categoría/taxonomía.

¿Es correcto que no se pueden restringir las publicaciones enlazadas para que sean solo aquellas dentro de la misma taxonomía? Aquí está el código correcto y como dice vancoder, debe aparecer dentro del bucle (lo coloqué justo antes de endwhile;):

<div class="next-posts"><?php next_post_link('%link', 'Entrada más nueva &gt;') ?></div>
<div class="prev-posts"><?php previous_post_link('%link', '&lt; Entrada anterior') ?></div>

Como este es un tipo de publicación personalizada con una taxonomía personalizada, supongo que la paginación se rompe porque Wordpress busca una 'categoría' como si fueran publicaciones normales? ¿Hay alguna manera de hacer que esto funcione para que solo se muestren las publicaciones de Trabajo dentro de mi taxonomía personalizada?

18 ago 2013 15:17:29
Comentarios

Sí, las funciones solo funcionan con la taxonomía 'category'. No conozco un método para anular esto.

vancoder vancoder
19 ago 2013 09:22:43
0

A partir de WordPress 3.8 puedes especificar una taxonomía como quinto parámetro. En tu caso sería algo como:

<?php previous_post_link( '%link', __( 'Entrada más antigua &gt;', 'sometextdomain' ), true, '', 'somecustomtaxonomy' ); ?>
<?php next_post_link( '%link', __( 'Entrada más reciente &gt;', 'sometextdomain' ), true, '', 'somecustomtaxonomy' ); ?>

Consulta el Codex para más información http://codex.wordpress.org/Function_Reference/previous_post_link

6 oct 2014 15:48:30
0

Asegúrate de haber realizado una llamada custom wp_query antes de llamar a next_post_link() / previous_post_link() y no haber restablecido la consulta a la predeterminada.

En ese caso, por favor utiliza wp_reset_query después del uso de wp_query personalizada.

2 sept 2016 13:05:10