En el siguiente ejemplo muestro como listar un post type y añadir un paginador para navegar por sus resultados. No es necesario comprender toda la lógica, pero si es importante prestar atención a la sección de variables donde configuraremos el tipo de post type y el número de posts por página.
Entre sus características:
- Oculta página Anterior si te encuentras en la primera.
- Oculta página Siguiente si te encuentras al final.
- Fácilmente editable su HTML.
- Editando sus variables se puede alterar el comportamiento.
<?php
//===
// VARIABLES
//===
// Post type EDITAME!!!
$post_type = 'post';
// Número de elementos por página EDITAME!!!
$posts_per_page = 3;
// Página actual
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// Enlace actual
$actual_link = explode('?', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]")[0];
// Busqueda de posts
$posts = query_posts("posts_per_page=$posts_per_page&post_type=$post_type&paged=$paged");
// Cuenta el número de resultados
$found_posts = count(query_posts("posts_per_page=-1&post_type=$post_type"));
//===
// BUCLE
//===
if ($posts):
foreach ( $posts as $post ):
?>
<a href="<?php the_permalink(); ?>" title="<?= the_title(); ?>">
<article>
<!-- Imagen destacada -->
<img src="<?= wp_get_attachment_url( get_post_thumbnail_id(get_the_ID())); ?>" alt="Miniatura" class="img-fluid">
<p>
<!-- Fecha publicación -->
<span class="fecha"><?= date_i18n('j F Y', strtotime($post->post_date)); ?></span><?php the_category(' · '); ?></p>
<a href="<?= the_permalink(); ?>" title="<?= the_title(); ?>">
<h2><?= the_title(); ?></h2>
</a>
<div class="resumen">
<!-- Resumen -->
<?php
$words = explode(' ', strip_tags($post->post_content, '<p>'));
echo implode(' ', array_splice($words, 0, 100)) . '...';
?>
</div>
</article>
</a>
<?php
endforeach;
endif;
wp_reset_query();
?>
<!-- Paginador -->
<nav>
<ul>
<li>
<!-- Pagina anterior -->
<?php if ($paged != 1): ?>
<a href="<?= $actual_link . '?paged=' . ($paged - 1); ?>">Anterior</a>
<?php endif; ?>
<!-- Fin Pagina siguiente -->
</li>
<li>
<!-- Pagina siguiente -->
<?php if (($paged * $posts_per_page / $found_posts) != 1 && count($posts) >= $posts_per_page): ?>
<a href="<?= $actual_link . '?paged=' . ($paged + 1); ?>">Siguiente</a>
<?php endif; ?>
<!-- Fin Pagina siguiente -->
</li>
</ul>
</nav>
<!-- Fin Paginador -->
{{ comments.length }} comentarios