✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

WordPress anpassad inläggstyp paginering

21

Generellt sett, när jag arbetar med anpassad posttyppaginering, görs det genom att skriva en anpassad fråga med WP_Query och sedan anropa wp_reset_postdata() i slutet av The Loop.

Jag tror fortfarande att detta har sin plats, men det finns en enklare lösning som du kanske kan implementera med hjälp av en specifik krok som WordPress tillhandahåller.

Specifikt pratar jag om pre_get_posts- kroken. I kodreferensen kan du se att detta definieras som:

Utlöses efter att frågevariabelobjektet har skapats, men innan den faktiska frågan körs.

Och eftersom frågan innehåller mycket information kan vi gå vidare och använda den för att avgöra om vi vill modifiera de nödvändiga argumenten för att hantera sidnumrering.

Med detta menar jag att vi måste titta på egenskapen post_type och posts_per_page- värdet. För att göra detta kan du implementera det på följande sätt :

<?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);
  }
}

Koden ovan är inte objektorienterad (om det vore så skulle jag ställa in en prenumerant och en klass som ansvarar för att hantera logiken i funktionen), men du kan se hur du ställer in den i sin mest grundläggande form.

Så om du arbetar med anpassad posttyp paginering och inte vill ta itu med de olika aspekterna av att ställa in en anpassad fråga, kan detta lösa ditt problem.

Inspelningskälla: tommcfarlin.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer