PHP: Verwenden Sie die WordPress-API, um einen Shortcode zum Auflisten von Unterseiten zu erstellen
Wir arbeiten gerade an einer recht komplexen Implementierung für einen Unternehmenskunden. Die Seite wird in WordPress erstellt, hat aber eine Menge Schnickschnack. Wenn ich diese Art von Arbeit mache, speichere ich häufig den benutzerdefinierten Code, um ihn später auf anderen Websites wiederzuverwenden. In diesem Fall dachte ich, es sei eine so nützliche Funktion, dass ich sie mit der Welt teilen wollte. Wir benutzen die Avada WordPress-Theme mit dem Fusion Page Builder als übergeordnetes Thema und Bereitstellung einer Reihe von benutzerdefiniertem Code in unserem untergeordneten Thema.
WordPress hat bereits einige Funktionen in seiner API, mit denen Unterseiten wie wp_list_pages und get_pages aufgelistet werden können. Das Problem ist, dass sie nicht genügend Informationen zurückgeben, wenn Sie dynamisch eine Liste mit einer Reihe von Informationen erstellen möchten.
Für diesen Kunden wollten sie Stellenbeschreibungen veröffentlichen und die Liste der offenen Stellen wird automatisch in absteigender Reihenfolge bis zu ihrem Veröffentlichungsdatum generiert. Sie wollten auch einen Auszug der Seite anzeigen.
Also mussten wir zuerst der Seitenvorlage eine Auszugsunterstützung hinzufügen. In functions.php für ihr Thema haben wir hinzugefügt:
add_post_type_support ('Seite', 'Auszug');
Dann mussten wir einen benutzerdefinierten Shortcode registrieren, der die Liste der Unterseiten, Links zu ihnen und den Auszug für sie generiert. Tun Sie dies, wir müssen die verwenden Wordpress-Schleife. In functions.php haben wir hinzugefügt:
// Unterseiten in einer Listenfunktion auflisten dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (Array ('ifempty' => 'No Records', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'page', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'Publish_date', 'order' => 'DESC' ,); $ parent = new WP_Query ($ args); if ($ parent-> have_posts ()) {$ string. = $ content. ' '; while ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; if (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; in der Zwischenzeit; } else {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); return $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
Jetzt kann der Shortcode auf der gesamten Site implementiert werden, um die untergeordneten Seiten mit einem Link und einem Auszug anzuzeigen. Verwendung:
[list_subpages aclass = "button" ifempty = "Leider haben wir derzeit keine offenen Stellen."] Liste der Jobs [/ list_subpages]
Das Ergebnis ist eine schöne, saubere, ungeordnete Liste der veröffentlichten Jobs, bei denen es sich um untergeordnete Seiten unter ihrer Karriereseite handelt.
Wenn keine Jobs veröffentlicht wurden (keine untergeordneten Seiten), wird Folgendes veröffentlicht:
Leider haben wir derzeit keine offenen Stellen.
Wenn Jobs veröffentlicht wurden (untergeordnete Seiten), wird Folgendes veröffentlicht:
Liste der Jobs:
- Neueste untergeordnete Seite - Auszug aus der untergeordneten Seite
- Nächste untergeordnete Seite - Auszug aus der untergeordneten Seite
- Nächste untergeordnete Seite - Auszug aus der untergeordneten Seite