PHP: gebruik de WordPress API om een ​​shortcode te maken om subpagina's weer te geven

WordPress PHP

We werken momenteel aan een vrij complexe implementatie voor een zakelijke klant. De site wordt gebouwd in WordPress, maar heeft een heleboel toeters en bellen. Als ik dit soort werk doe, bewaar ik vaak de aangepaste code om deze later op andere sites te hergebruiken. In dit geval dacht ik dat het zo'n handige functie was, ik wilde het met de wereld delen. We gebruiken de Avada WordPress-thema met de Fusion Page Builder als ouderthema, en het implementeren van nogal wat aangepaste code in ons child-thema.

WordPress heeft al een aantal functies in zijn API die kunnen worden gebruikt om subpagina's weer te geven, zoals wp_list_pages en get_pages. Het probleem is dat ze niet genoeg informatie retourneren als u hoopt dynamisch een lijst met een heleboel informatie te maken.

Voor deze klant wilden ze functiebeschrijvingen plaatsen en de lijst met vacatures automatisch laten genereren in aflopende volgorde op hun publicatiedatum. Ze wilden ook een fragment van de pagina laten zien.

Dus eerst moesten we fragmentondersteuning toevoegen aan de paginasjabloon. In functions.php voor hun thema hebben we toegevoegd:

add_post_type_support ('pagina', 'excerpt');

Vervolgens moesten we een aangepaste shortcode registreren die de lijst met subpagina's, links ernaar en het fragment voor hen zou genereren. Doe dit, we moeten de WordPress Loop. In functions.php hebben we toegevoegd:

// Subpagina's weergeven in een lijstfunctie dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Geen records', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'pagina', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ parent = nieuwe 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. = ' '; ondertussen; } anders {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); retourneer $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');

Nu kan de shortcode op de hele site worden geïmplementeerd om de onderliggende pagina's met een link en fragment te tonen. Gebruik:

[list_subpages aclass = "button" ifempty = "Sorry, we hebben momenteel geen vacatures."] Lijst met vacatures [/ list_subpages]

Het resultaat is een mooie, schone, ongeordende lijst van de gepubliceerde vacatures, die onderliggende pagina's zijn onder hun carrièrepagina.

Als er geen vacatures zijn gepubliceerd (geen onderliggende pagina's), wordt het volgende gepubliceerd:

Sorry, we hebben momenteel geen vacatures.

Als er vacatures zijn gepubliceerd (onderliggende pagina's), wordt het volgende gepubliceerd:

Lijst met vacatures:

Wat denk je?

Deze site gebruikt Akismet om spam te verminderen. Ontdek hoe uw reactiegegevens worden verwerkt.