PHP: usa a API de WordPress para crear un código curto para listar subpáxinas
Agora estamos a traballar nunha implementación bastante complexa para un cliente empresarial. O sitio está a ser construído en WordPress pero ten unha chea de campás e asubíos. Moitas veces, cando estou a facer este tipo de traballo, gústame gardar o código personalizado para posteriormente utilizalo noutros sitios. Neste caso, pensei que era unha función tan útil, quería compartila co mundo. Estamos a usar o Tema Avada WordPress co Fusion Page Builder como tema principal e implementando bastante código personalizado no tema infantil.
WordPress xa ten un par de funcións na súa API que se poden usar para listar subpáxinas, como wp_list_pages e get_pages. O problema é que non devolven a información suficiente se esperas crear dinámicamente unha lista cunha chea de información.
Para este cliente, querían publicar descricións de traballo e xerar automaticamente a lista de ofertas de traballo en orde descendente ata a súa data de publicación. Tamén querían amosar un extracto da páxina.
Entón, primeiro, tivemos que engadir soporte de extractos ao modelo de páxina. En functions.php para o seu tema, engadimos:
add_post_type_support ('páxina', 'extracto');
Despois, necesitamos rexistrar un código abreviado personalizado que xerase a lista de subpáxinas, ligazóns a elas e o extracto das mesmas. Fai isto, temos que usar o Bucle de WordPress. En functions.php, engadimos:
// Listar subpáxinas nunha función List dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Sen rexistros', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'páxina', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'publicación_data', 'order' => 'DESC' ,); $ pai = nova WP_Query ($ args); if ($ parent-> have_posts ()) {$ string. = $ contido. ' '; while ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; if (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; mentres tanto; } else {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); devolver $ string; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
Agora, o código curto pódese implementar en todo o sitio para amosar as páxinas fillas cunha ligazón e un extracto. Uso:
[list_subpages aclass = "button" ifempty = "Sentímolo, actualmente non temos ningunha oferta de traballo."] Lista de postos de traballo [/ list_subpages]
O resultado é unha boa e limpa lista desordenada dos traballos publicados, que son páxinas secundarias na súa páxina de carreira.
Se non se publicaron traballos (sen páxinas secundarias), publicará:
Sentímolo, actualmente non temos ningunha oferta de traballo.
Se houbese traballos publicados (páxinas fillos), publicará:
Lista de postos de traballo:
- Última páxina infantil - Extracto da páxina infantil
- Seguinte páxina infantil - Extracto da páxina infantil
- Seguinte páxina infantil - Extracto da páxina infantil