PHP: use la API de WordPress para crear un código corto para enumerar subpáginas
Estamos trabajando en una implementación bastante compleja para un cliente empresarial en este momento. El sitio se está construyendo en WordPress pero tiene un montón de campanas y silbatos. A menudo, cuando estoy haciendo este tipo de trabajo, me gusta guardar el código personalizado para reutilizarlo más tarde en otros sitios. En este caso, pensé que era una función tan útil, quería compartirla con el mundo. Estamos usando el Tema de WordPress de Avada con Fusion Page Builder como tema principal, e implementando bastante código personalizado en nuestro tema secundario.
WordPress ya tiene un par de funciones en su API que se pueden usar para listar subpáginas, como wp_list_pages y get_pages. El problema es que no devuelven suficiente información si espera crear dinámicamente una lista con mucha información.
Para este cliente, querían publicar descripciones de puestos y que la lista de puestos vacantes se generara automáticamente en orden descendente según la fecha de publicación. También querían mostrar un extracto de la página.
Entonces, primero, tuvimos que agregar soporte de extractos a la plantilla de página. En functions.php para su tema, agregamos:
add_post_type_support ('página', 'extracto');
Luego, necesitábamos registrar un código abreviado personalizado que generaría la lista de subpáginas, los enlaces a ellas y el extracto de ellas. Haz esto, tenemos que usar el WordPress Loop. En functions.php, agregamos:
// Listar subpáginas en una función de lista dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (array ('ifempty' => 'Sin registros', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'página', '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 ($ padre-> have_posts ()): $ padre-> the_post (); $ cadena. = ' '.get_the_title ().' '; if (has_excerpt ($ publicación-> ID)) {$ string. = '-' .get_the_excerpt (); } $ cadena. = ' '; end while; } más {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); return $ cadena; } add_shortcode ('lista_subpáginas', 'dknm_list_child_pages');
Ahora, el código abreviado se puede implementar en todo el sitio para mostrar las páginas secundarias con un enlace y un extracto. Uso:
[list_subpages aclass = "button" ifempty = "Lo sentimos, actualmente no tenemos puestos vacantes"] Lista de trabajos [/ list_subpages]
El resultado es una lista ordenada, limpia y agradable de los trabajos publicados, que son páginas secundarias en la página de su carrera.
Si no hubo trabajos publicados (no hay páginas secundarias), se publicarán:
Lo sentimos, actualmente no tenemos vacantes.
Si hubo trabajos publicados (páginas secundarias), se publicarán:
Lista de trabajos:
- Última página secundaria - Extracto de la página secundaria
- Siguiente página secundaria - Extracto de la página secundaria
- Siguiente página secundaria - Extracto de la página secundaria