Render Inhalt von mehreren Seiten und ihren Nachkommen

Ich möchte eine Route zu meiner Website animals.example.com/book , animals.example.com/book , die den gesamten Inhalt der in einem Abfrageparameter angegebenen Seiten und Nachkommen animals.example.com/book .

Zum Beispiel, wenn meine Seitenstruktur ist

 intro pets dogs cats farm-animals cows chickens sheep wild-animals predators wolves coyotes ruminants deer rabbits appendix average-weights faq common-myths 

Ich möchte den Endpunkt

animals.example.com/book?include=[farm-animals,predators]

um den Inhalt dieser Seiten in Reihenfolge darzustellen:

  • Nutztiere
  • Kühe
  • Hühner
  • Schaf
  • Räuber
  • Wölfe
  • Kojoten

Wenn der Abfrageparameter weggelassen wird, sollte die gesamte Site gerendert werden.

Welche functionen oder Abfragen sind dafür erforderlich, und wo sollte diese Logik in WordPress integriert werden?

Solutions Collecting From Web of "Render Inhalt von mehreren Seiten und ihren Nachkommen"

Sie können WordPress add_query_var() mit add_query_var() hinzufügen.

 global $wp; $wp->add_query_var( 'includes' ); 

Nach dem Hinzufügen der Abfrage var würden Sie überprüfen, ob sie mit get_query_var('includes') , und dann könnten Sie WP_Query() , um die Seiten zu erhalten (Sie können die verfügbaren Argumente hier sehen ).

Wenn es weggelassen wird, würden Sie einfach eine Abfrage ausführen, um alle untergeordneten Elemente der Seite abzurufen.

Eine weitere nette Ergänzung wäre das Hinzufügen der Abfrage var zu den Permalinks mit add_rewrite_rules .

 function custom_query_var() { global $wp; add_rewrite_rule( '^books/(.+)', 'index.php?pagename=books&includes=$matches[1], 'top' ); } add_action( 'init', 'custom_query_var' ); 

Sie müssten diese Regeln leeren, wenn Sie zu einem anderen Thema wechseln.

 function flush_custom_query_var() { flush_rewrite_rules(); } add_action( 'after_theme_switch', 'flush_custom_query_var' ); 

Ich habe die Rewrite-Regeln nicht wirklich getestet, wenn ich ein Array von Parametern anstelle von nur einem Parameter übergebe, also müsste es etwas geändert werden.