✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Paginacja typu niestandardowego posta WordPress

22

Ogólnie rzecz biorąc, za każdym razem, gdy pracuję z niestandardowym paginacją typu post, robię to, pisząc niestandardowe zapytanie za pomocą WP_Query, a następnie wywołując wp_reset_postdata() na końcu The Loop.

Nadal uważam, że to ma swoje miejsce, ale istnieje prostsze rozwiązanie, które możesz wdrożyć za pomocą konkretnego haka, który zapewnia WordPress.

W szczególności mówię o haczyku pre_get_posts. W Odniesieniu do kodu można zobaczyć, że jest to zdefiniowane jako:

Pożary po utworzeniu obiektu zmiennej zapytania, ale przed faktycznym uruchomieniem zapytania.

A ponieważ zapytanie zawiera dużo informacji, możemy śmiało użyć ich do określenia, czy chcemy zmodyfikować niezbędne argumenty, aby poradzić sobie z paginacją.

Rozumiem przez to, że musimy spojrzeć na właściwość post_type i wartość posts_per_page. W tym celu możesz zaimplementować go w następujący sposób :

<?php

use WP_Query;

add_action('pre_get_posts', __NAMESPACE__. 'customPostTypePagination');
/**
 * If we're on the 'acme-post-type' page, then adjusts pagination so there are only two posts per page. This will 
 * affect pagination so we can use built-in pagination links to easily page through the content.
 *
 * @param WP_Query the instance of the query object that contains information to populate the template.
 *
 * @return WP_Query an unmodified version of the query object or a modified version if we're on the acme post-type.
 */
function customPostTypePagination(WP_Query $query)
{
  if (isset($query->query['post_type']) && 'acme-post-type' == $query->query['post_type']) {
    $query->set('posts_per_page', 2);
  }
}

Powyższy kod nie jest zorientowany obiektowo (gdyby tak było, ustawiłbym subskrybenta i klasę odpowiedzialną za obsługę logiki w funkcji), ale możesz zobaczyć, jak to ustawić w najbardziej podstawowej formie.

Jeśli więc pracujesz z niestandardową paginacją typu postów i nie chcesz zajmować się różnymi aspektami konfigurowania niestandardowego zapytania, może to rozwiązać Twój problem.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów