Come determinare se esiste una pagina successiva
Sono nuovo nello sviluppo WordPress e sto cercando di convertire il mio HTML in un tema WordPress, ho iniziato con il tema blank di Chris Coyer.
<div class="navigation">
<div class="next-posts">
<?php next_posts_link('« Post Precedenti') ?>
</div>
<div class="prev-posts">
<?php previous_posts_link('Post Più Recenti »') ?>
</div>
</div>
Come posso visualizzare il div solo se esiste un next_posts_link()
. Ho bisogno di questo perché userò <ul>
per la mia paginazione. Se non lo faccio, otterrò un punto elenco vuoto

Puoi utilizzare get_previous_posts_link
e get_next_posts_link
per determinare se esistono in questo modo:
$prev_link = get_previous_posts_link(__('« Articoli più vecchi'));
$next_link = get_next_posts_link(__('Articoli più recenti »'));
// come suggerito nei commenti
if ($prev_link || $next_link) {
echo '<ul class="navigation">';
if ($prev_link){
echo '<li>'.$prev_link .'</li>';
}
if ($next_link){
echo '<li>'.$next_link .'</li>';
}
echo '</ul>';
}
Spero sia utile

L'unico problema è che potresti potenzialmente generare una lista vuota, che produrrebbe un markup non valido, e di fatto avresti lo stesso problema che l'utente ha con il codice esistente.

@t31os, immagino che farò qualcosa come if ($prev_link || $next_link) // output ul

L'ho scritto un po' di tempo fa, ma dovrebbe essere ancora valido:
http://www.ericmmartin.com/conditional-pagepost-navigation-links-in-wordpress-redux/
Puoi aggiungere la seguente funzione al tuo file functions.php
:
/**
* Se esiste più di una pagina, restituisce TRUE.
*/
function show_posts_nav() {
global $wp_query;
return ($wp_query->max_num_pages > 1);
}
Poi aggiorna il tuo codice con:
<?php if (show_posts_nav()) : ?>
<div class="navigation">
<div class="next-posts"><?php next_posts_link('« Articoli più vecchi') ?></div>
<div class="prev-posts"><?php previous_posts_link('Articoli più recenti »') ?></div>
</div>
<?php endif; ?>

È importante notare che $wp_query
non sembra essere disponibile ovunque; ad esempio, ho provato a usarlo all'interno di un override di template WooCommerce e l'oggetto non esisteva, quindi ho dovuto richiamarlo da functions.php
utilizzando la risposta di Eric Martin.
