PHP: utilizza l'API di WordPress per creare uno shortcode per elencare le sottopagine
In questo momento stiamo lavorando a un'implementazione piuttosto complessa per un cliente aziendale. Il sito è stato creato in WordPress ma ha un sacco di campane e fischietti. Spesso, quando eseguo questo tipo di lavoro, mi piace salvare il codice personalizzato per riutilizzarlo in seguito su altri siti. In questo caso, ho pensato che fosse una funzione così utile, volevo condividerla con il mondo. Stiamo usando il Tema WordPress Avada con Fusion Page Builder come tema principale e distribuendo un po 'di codice personalizzato nel nostro tema figlio.
WordPress ha già un paio di funzioni nella sua API che possono essere utilizzate per elencare le sottopagine, come wp_list_pages e get_pages. Il problema è che non restituiscono informazioni sufficienti se speri di creare dinamicamente un elenco con un mucchio di informazioni.
Per questo cliente, desideravano pubblicare descrizioni delle offerte di lavoro e fare in modo che l'elenco delle offerte di lavoro venisse generato automaticamente in ordine decrescente in base alla data di pubblicazione. Volevano anche visualizzare un estratto della pagina.
Quindi, per prima cosa, abbiamo dovuto aggiungere il supporto di estratti al modello di pagina. In functions.php per il loro tema, abbiamo aggiunto:
add_post_type_support ('page', 'excerpt');
Quindi, dovevamo registrare uno shortcode personalizzato che generasse l'elenco delle sottopagine, i collegamenti ad esse e il relativo estratto. Fallo, dobbiamo usare il file WordPress loop. In functions.php, abbiamo aggiunto:
// Elenca le sottopagine in una funzione Elenco dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Nessun record', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'page', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ genitore = nuovo WP_Query ($ args); if ($ parent-> have_posts ()) {$ string. = $ content. ' '; while ($ parent-> have_posts ()): $ parent-> the_post (); $ stringa. = ' ".get_the_title ()." '; if (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ stringa. = ' '; endwhile; } altro {$ string = ' ". $ atts [" ifempty "]." '; } wp_reset_postdata (); restituire $ stringa; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
Ora, lo shortcode può essere implementato in tutto il sito per mostrare le pagine figlie con un collegamento e un estratto. Utilizzo:
[list_subpages aclass = "button" ifempty = "Spiacenti, al momento non abbiamo opportunità di lavoro."] Elenco dei lavori [/ list_subpages]
Il risultato è un elenco piacevole e pulito e non ordinato dei lavori pubblicati, che sono pagine figlio sotto la loro pagina carriera.
Se non sono stati pubblicati lavori (nessuna pagina figlie), pubblicherà:
Spiacenti, al momento non abbiamo opportunità di lavoro.
Se sono stati pubblicati lavori (pagine figlie), pubblicherà:
Elenco dei lavori:
- Ultima pagina figlio - Estratto dalla pagina del bambino
- Pagina figlio successiva - Estratto dalla pagina del bambino
- Pagina figlio successiva - Estratto dalla pagina del bambino