WordPress añadir paginador en plantilla | Programador Web Valencia

WordPress añadir paginador en plantilla

2 minutos

WordPress

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 -->

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...