Warum benötigen Sie beim Paginieren eine unwahrscheinliche Ganzzahl?

17

Die paginate_linksCodex-Funktionsreferenz enthält einen Beispielcode, der im gesamten Netz erneut bereitgestellt wird.

Es hat einen Abschnitt, der eine Variable mit dem Namen verwendet $big = 999999999; // need an unlikely integer:

echo paginate_links( array(
    'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
) );

Und wird str_replacein der echo paginate_linksFunktion verwendet.

Ist das eine Form der Einkapselung?

Jason Green
quelle

Antworten:

16

Beachten Sie Folgendes get_pagenum_link( $big ): Dadurch wird eine URL ( kein Link) basierend auf der im ersten Parameter angegebenen Nummer erstellt.

Diese Funktion wird verwendet, um das Grundmuster für die URL abzurufen, und die hohe Ganzzahl wird hier verwendet, weil:

  1. Sie müssen eine Ganzzahl als Argument angeben.
  2. Die resultierende URL wird mit gefiltert apply_filters('get_pagenum_link', $result)und kann durch Plugins geändert werden. Dieses Risiko ist geringfügig höher für Nummern, die mit vorhandenen Seiten übereinstimmen, z. B. wenn ein Plug-in separate Titel für Unterseiten implementiert.

Das ist also nur eine… schmutzige Konvention, ein Signal an andere Plugins: Bitte ändern Sie das nicht! Ich denke, PHP_INT_MAXwäre besser gewesen, aber immer noch hässlich. Und ich frage mich, wie viele Plugin-Entwickler das wissen .

Die Nummer wird dann durch den Platzhalter ersetzt, der in benötigt wird paginate_links().

Was Sie hier sehen, ist eine unvollständige API . Versuchen Sie, etwas aus diesem Beispiel zu lernen - veröffentlichen Sie keine unvollständigen APIs, da Ihre Dokumente sonst peinlich aussehen. :)

fuxia
quelle
Ich bin damit einverstanden, dass PHP_INT_MAX meiner Meinung nach besser gewesen wäre, aber mich damals mehr verwirrt hätte. Ihre Erklärung gefällt mir sehr gut, sie bestätigt, dass ich in die richtige Richtung gedacht habe. Ich wollte einfach keine Vermutungen anstellen.
Jason Green
Wird dies also nur im Falle eines Filters zur get_pagenum_linkBeeinflussung vorhandener Seitenzahlen verwendet? (da paginate_links()Anwendungen get_pagenum_link()ohnehin Standard). Scheint mir ein extremer Fall zu sein, es sei denn, ich vermisse etwas?
Cai
@Cai Sieht so aus, als wäre es einmal ein echtes Problem gewesen. Code-Basen, die über einen langen Zeitraum hinweg gepflegt werden, sind in der Regel mit Problemumgehungen für Randfälle gefüllt.
Fuxia
Es sieht so aus, als ob paginate_links() es nicht immer get_pagenum_link()standardmäßig verwendet wurde, und ich frage mich, ob dies eine Konvention von damals ist und ob die "unwahrscheinliche Ganzzahl" wirklich benötigt wird (oder ob die eigentliche Problemumgehung einfach war get_pagenum_link()).
Cai