Benutzerdefinierte Paginierung des WordPress-Posttyps
Im Allgemeinen, wenn ich mit benutzerdefinierter Posttyp-Paginierung arbeite, geschieht dies, indem ich eine benutzerdefinierte Abfrage mit WP_Query schreibe und dann wp_reset_postdata() am Ende von The Loop aufrufe .
Ich denke immer noch, dass dies seinen Platz hat, aber es gibt eine einfachere Lösung, die Sie möglicherweise mit einem bestimmten Hook implementieren können, den WordPress bereitstellt.
Insbesondere spreche ich über den pre_get_posts- Hook. In der Codereferenz können Sie sehen, dass dies wie folgt definiert ist:
Wird ausgelöst, nachdem das Abfragevariablenobjekt erstellt wurde, aber bevor die eigentliche Abfrage ausgeführt wird.
Und da die Abfrage viele Informationen enthält, können wir sie verwenden, um zu bestimmen, ob wir die notwendigen Argumente ändern möchten, um mit der Paginierung umzugehen.
Damit meine ich, dass wir uns die Eigenschaft post_type und den Wert posts_per_page ansehen müssen. Um dies zu tun, können Sie es auf folgende Weise implementieren :
<?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);
}
}
Der obige Code ist nicht objektorientiert (wenn es so wäre, würde ich einen Abonnenten und eine Klasse einrichten, die für die Handhabung der Logik in der Funktion verantwortlich sind), aber Sie können sehen, wie man ihn in seiner einfachsten Form einrichtet.
Wenn Sie also mit benutzerdefinierter Posttyp-Paginierung arbeiten und sich nicht mit den verschiedenen Aspekten der Einrichtung einer benutzerdefinierten Abfrage befassen möchten, kann dies Ihr Problem lösen.