previous_post_link() e next_post_link() con un custom post type?
Mi trovo in single-work.php
per un custom post type chiamato work
, all'interno del loop.
Sto cercando di creare due link per il post precedente e successivo.
Utilizzando questo codice:
<?php previous_post_link(); ?>
e
<?php next_post_link(); ?>
Ma non viene visualizzato nulla. Mi sfugge qualcosa?
Ecco il mio codice, molto semplice:
<?php get_header(); ?>
<div class="full" >
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php next_post_link('%link', 'Post successivo »'); ?>
<?php next_post_link('%link', 'Post successivo »'); ?>
<?php endwhile; // fine del loop. ?>
</div><!--/full-->
<?php get_footer(); ?>

Quello che vedo nel tuo codice è che i link per il post successivo e precedente appaiono all'interno del ciclo while, mentre non dovrebbero essere dentro il loop e dovrebbero apparire così:
<?php get_header(); ?>
<div class="full" >
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php endwhile; // fine del loop. ?>
<?php next_post_link('%link', 'Post successivo »'); ?>
<?php previous_post_link('%link', '« Post precedente'); ?>
</div><!--/full-->
<?php get_footer(); ?>
Oppure, puoi trovare i dettagli qui.
Nel post sopra ho trovato la paginazione numerica ma spiega comunque in modo molto dettagliato come funziona esattamente la paginazione.

Leggi la documentazione.
Questa funzione non funzionerà (fallirà silenziosamente) se mysql.trace_mode è abilitato nel tuo php.ini. Se non puoi modificare quel file, prova ad aggiungere
ini_set( 'mysql.trace_mode', 0 );
nel file functions.php del tuo tema.
Potrebbe risolvere il tuo problema, ha funzionato per me.

Le funzioni sono corrette; imposta i parametri
<?php next_post_link('%link', 'Post successivo »'); ?>
<?php next_post_link('%link', 'Post successivo »'); ?>
Beh, senza vedere il tuo codice, è difficile dire perché. Ci sono errori o avvisi PHP?
Aggiornamento
Un piccolo esempio
<?php query_posts( array( 'post_type' => 'page', 'post_status' => 'publish' ) ) ?>
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post() ?>
<!-- fai qualcosa -->
<div id="nav-single">
<div class="left"><?php previous_post_link(); ?></div>
<div class="right"><?php next_post_link(); ?></div>
</div>
<?php endwhile; // fine del loop. ?>
<?php wp_reset_query(); ?>
<?php else : ?>
<!-- fai altre cose qui -->
<?php endif ?>

Quei parametri sono opzionali, inserirli non aiuta in alcun modo. Nessun errore PHP o altro, ecco perché ho difficoltà a capirlo, è semplicemente silenzioso..

Sì, ma funziona su molti template singoli in molti temi. È difficile senza vedere il codice sorgente del template, dove sta il problema. È anche possibile che un plugin o delle funzioni si aggancino all'interno del loop e interrompano i tag del template.

E il CPT è all'interno del loop predefinito? Nel tuo codice c'è un loop predefinito, non diversi per CPT. Ma sì, è possibile agganciare un CPT all'interno del loop e aggiungere il CPT.
