PHP: Använd WordPress API för att skapa en kortkod för att lista undersidor

WordPress PHP

Vi arbetar med en ganska komplex implementering för en företagsklient just nu. Webbplatsen byggs i WordPress men har massor av klockor och visselpipor. När jag gör den här typen av arbete vill jag ofta spara den anpassade koden för att återanvändas senare på andra webbplatser. I det här fallet tyckte jag att det var en så användbar funktion, jag ville dela den med världen. Vi använder Avada WordPress-tema med Fusion Page Builder som ett överordnat tema och distribuera en hel del anpassad kod i vårt barns tema.

WordPress har redan ett par funktioner i sitt API som kan användas för att lista undersidor, som wp_list_pages och get_pages. Problemet är att de inte returnerar tillräckligt med information om du hoppas att dynamiskt skapa en lista med en massa information.

För den här kunden ville de lägga upp jobbbeskrivningar och att listan över lediga jobb automatiskt genereras i fallande ordning efter publiceringsdatum. De ville också visa ett utdrag av sidan.

Så först måste vi lägga till utdragstöd till sidmallen. I functions.php för deras tema lade vi till:

add_post_type_support ('sida', 'utdrag');

Sedan behövde vi registrera en anpassad kortkod som skulle generera listan med undersidor, länkar till dem och utdraget för dem. Gör detta, vi måste använda WordPress Loop. I functions.php lade vi till:

// Lista undersidor i en listfunktion dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Inga poster', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'sida', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ parent = ny WP_Query ($ args); if ($ parent-> have_posts ()) {$ string. = $ content. ' '; medan ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; if (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; slutligen; } annat {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); returnera $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');

Nu kan kortkoden implementeras på hela webbplatsen för att visa underordnade sidor med en länk och utdrag. Användande:

[list_subpages aclass = "button" ifempty = "Tyvärr har vi för närvarande inga lediga jobb."] Lista över jobb [/ list_subpages]

Resultatet är en fin, ren oordnad lista över publicerade jobb, som är barnsidor under deras karriärsida.

Om inga jobb publicerades (inga underordnade sidor) kommer det att publiceras:

Tyvärr har vi för närvarande inga lediga tjänster.

Om det publicerades jobb (underordnade sidor) kommer det att publiceras:

Lista över jobb:

Vad tror du?

Den här sidan använder Akismet för att minska spam. Läs om hur din kommentardata behandlas.