Cómo determinar si hay una página siguiente
Soy nuevo en el desarrollo de WordPress, estoy tratando de convertir mi HTML en un tema de WordPress, comencé con el tema en blanco de Chris Coyer.
<div class="navigation">
<div class="next-posts">
<?php next_posts_link('« Entradas Anteriores') ?>
</div>
<div class="prev-posts">
<?php previous_posts_link('Entradas Nuevas »') ?>
</div>
</div>
¿Cómo puedo mostrar el div solo si existe un next_posts_link()
? Necesito esto ya que usaré <ul>
para mi paginación. Si no lo hago, obtendré una viñeta vacía

Puedes usar get_previous_posts_link
y get_next_posts_link
para determinar si existen de esta manera:
$prev_link = get_previous_posts_link(__('« Entradas más antiguas'));
$next_link = get_next_posts_link(__('Entradas más recientes »'));
// como se sugiere en los comentarios
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>';
}
Espero que esto ayude

El único problema es que potencialmente podrías renderizar una lista vacía, lo que generaría un marcado inválido, y en efecto tendría el mismo problema que el usuario tiene con el código actual.

@t31os, supongo que haré algo como if ($prev_link || $next_link) // mostrar ul

Escribí esto hace un tiempo, pero aún debería ser válido:
http://www.ericmmartin.com/conditional-pagepost-navigation-links-in-wordpress-redux/
Puedes añadir la siguiente función a tu archivo functions.php
:
/**
* Si existe más de una página, retorna TRUE.
*/
function show_posts_nav() {
global $wp_query;
return ($wp_query->max_num_pages > 1);
}
Luego actualiza tu código a:
<?php if (show_posts_nav()) : ?>
<div class="navigation">
<div class="next-posts"><?php next_posts_link('« Entradas más antiguas') ?></div>
<div class="prev-posts"><?php previous_posts_link('Entradas más recientes »') ?></div>
</div>
<?php endif; ?>

Es importante tener en cuenta que $wp_query
no parece estar disponible en todas partes; por ejemplo, intenté usarlo dentro de una sobreescritura de plantilla de WooCommerce y el objeto no existía, así que tuve que llamarlo desde functions.php
usando la respuesta de Eric Martin.
