Wie bekomme ich den direkten Nachbarn in eine Hierarchie?

Ich habe einen benutzerdefinierten Beitragstyp für einen Kalender erstellt und eine Struktur wie diese erstellt:

  • 2012 (allgemeines Elternteil)
    • Januar-2012
      • 1. Januar 2012 2. Januar 2012
    • Februar 2012
      • 1. Februar 2012
      • 2. Februar 2012
    • März-2012
      • 1. März 2012
      • 2. März 2012

Wenn ich nun den ganzen Monat auf der Seite bin, möchte ich einen Link zu den Seiten des vorherigen und nächsten Monats anzeigen.

Beispiel: Januar <- Februar -> März

Ich habe versucht * get_previous_posts_link () * und bekomme NULL , dann setze ich global $ post und bekomme auch NULL .

Eine andere Frage, ist das im Allgemeinen der richtige Weg? Vielleicht bekomme ich dann die Postdaten / Link für den 31. Januar? Ich bin mir nicht sicher, ob * get_previous_posts_link () * die Hierarchie berücksichtigt.

Solutions Collecting From Web of "Wie bekomme ich den direkten Nachbarn in eine Hierarchie?"

Nun … Ich denke nicht, get_previous_posts_link würde dir helfen. Es gibt nur einen Link zu dem vorherigen Satz von Beiträgen innerhalb der aktuellen Abfrage zurück. (Siehe previous_posts_link es druckt diesen Link und get_previous_posts_link gibt ihn zurück).

Und Zitat aus dem Codex:

Gibt einen Link zum vorherigen Satz von Posts in der aktuellen Abfrage aus.

Wenn Sie die Werte für die Verwendung in PHP benötigen, verwenden Sie get_previous_posts_link ().

Da Post-Anfragen in der Regel in umgekehrter chronologischer Reihenfolge sortiert sind, zeigt next_posts_link () in der Regel auf ältere Einträge (gegen Ende des Sets) und previous_posts_link () verweist in der Regel auf neuere Einträge (am Anfang des Sets).

Sie könnten mit diesen Plugins versuchen:

Aber ich bin mir nicht sicher, ob sie richtig funktionieren werden.

Ich mache es immer mit meiner benutzerdefinierten SQL-Abfrage – es ist effizienter, weil Sie nicht alle Seiten (und alle Informationen über diese Seiten) auswählen müssen.

 function my_get_next_page_link($post_id =null) { global $post, $wpdb; if ( $post_id === null ) $p = $post; else $p = get_post($post_id); $res_id = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_type='page' AND post_status='publish' AND post_parent = %d AND menu_order > %d ORDER BY menu_order ASC, ID ASC LIMIT 1", $p->post_parent, $p->menu_order) ); if ( !$res_id ) return null; return get_permalink($res_id); } 

Natürlich sollten Sie innerhalb dieser function eine eigene SQL-Abfrage schreiben (abhängig von Ihren Abfrageparametern). Sie können dieselbe function für den Link der vorherigen Seite schreiben.

PS. Wahrscheinlich ist es nicht der einfachste Weg, es zu tun, aber es ist effizient und sehr anpassbar (wenn Sie SQL wissen).