Desarrollo Web

Publicaciones recientes en cualquier publicación o página a través de shortcode

Publicaciones recientes en cualquier publicación o página a través de shortcode

WordPress permite mostrar las publicaciones recientes mediante bloques y diferentes funcionalidades proporcionadas por el propio CMS, el tema activo o plugins. Sin embargo, en determinados proyectos podemos necesitar algo más específico: insertar una lista de entradas recientes exactamente dentro del contenido de una página, una entrada o incluso un tipo de contenido personalizado.

Una forma sencilla de resolverlo es crear nuestro propio shortcode de WordPress. De esta manera tendremos una pequeña funcionalidad reutilizable que podremos insertar donde la necesitemos y controlar mediante parámetros como el número de publicaciones, la categoría o el orden.

¿Por qué crear un shortcode para mostrar entradas recientes?

Las herramientas estándar de WordPress son suficientes para muchos sitios. El problema aparece cuando necesitamos incorporar esta funcionalidad dentro de una solución personalizada o queremos controlar mediante código cómo se realiza la consulta.

Este tipo de pequeñas funcionalidades son habituales en el desarrollo web con WordPress: en lugar de instalar un plugin completo para resolver una necesidad muy concreta, podemos desarrollar únicamente la función que necesitamos.

Crear el shortcode de publicaciones recientes

El siguiente snippet registra el shortcode [hugocalixto_recent_posts] y permite definir diferentes parámetros para controlar las publicaciones que se muestran.

function hugocalixto_recent_posts_shortcode( $atts ) {

    $atts = shortcode_atts(
        array(
            'cat'     => '',
            'num'     => 5,
            'order'   => 'DESC',
            'orderby' => 'post_date',
        ),
        $atts,
        'hugocalixto_recent_posts'
    );

    $args = array(
        'posts_per_page' => absint( $atts['num'] ),
        'order'          => sanitize_key( $atts['order'] ),
        'orderby'        => sanitize_key( $atts['orderby'] ),
    );

    if ( ! empty( $atts['cat'] ) ) {
        $args['cat'] = absint( $atts['cat'] );
    }

    $posts = get_posts( $args );

    if ( empty( $posts ) ) {
        return '';
    }

    $output = '<ul class="hugocalixto-recent-posts">';

    foreach ( $posts as $recent_post ) {
        $output .= '<li>';
        $output .= '<a href="' . esc_url( get_permalink( $recent_post->ID ) ) . '">';
        $output .= esc_html( get_the_title( $recent_post->ID ) );
        $output .= '</a>';
        $output .= '</li>';
    }

    $output .= '</ul>';

    return $output;
}

add_shortcode(
    'hugocalixto_recent_posts',
    'hugocalixto_recent_posts_shortcode'
);

Cómo usar el shortcode de publicaciones recientes

Una vez añadido el código, puedes insertar el shortcode dentro de una página o entrada de WordPress.

[hugocalixto_recent_posts]

Por defecto mostrará las últimas cinco publicaciones.

Cambiar el número de publicaciones

Podemos utilizar el parámetro num para definir cuántas entradas queremos mostrar:

[hugocalixto_recent_posts num="10"]

Mostrar publicaciones de una categoría

También podemos limitar los resultados a una categoría determinada utilizando su ID:

[hugocalixto_recent_posts num="5" cat="7"]

En este ejemplo se muestran cinco publicaciones pertenecientes a la categoría con ID 7.

Cambiar el orden de las publicaciones

Podemos controlar también el orden y el criterio utilizado para ordenar los resultados:

[hugocalixto_recent_posts num="10" order="DESC" orderby="post_date"]

El parámetro order permite utilizar valores como ASC o DESC, mientras que orderby determina el criterio utilizado para ordenar las publicaciones.

Puedes consultar las diferentes opciones disponibles en la documentación oficial de WP_Query.

¿Dónde añadir este código en WordPress?

Aunque técnicamente podrías añadir el snippet al archivo functions.php, no recomiendo modificar directamente el tema principal. Cualquier cambio podría perderse cuando el tema se actualice.

Una alternativa es utilizar el functions.php de un tema hijo. Para funcionalidades que deben mantenerse independientemente del diseño, prefiero utilizar un pequeño plugin propio o un plugin específico para gestionar snippets.

Shortcodes y desarrollo personalizado en WordPress

Este ejemplo es sencillo, pero el mismo concepto puede utilizarse para desarrollar funcionalidades mucho más específicas: mostrar contenidos de determinados tipos, aplicar filtros, recuperar campos personalizados, generar listados dinámicos o construir componentes adaptados a las necesidades de un proyecto.

Precisamente esta capacidad de extender WordPress mediante PHP, hooks, shortcodes, plugins propios y consultas personalizadas es una de las ventajas de utilizarlo como base para proyectos de desarrollo web a medida.

Conclusión

Crear un shortcode para mostrar publicaciones recientes nos permite controlar mediante unas pocas líneas de PHP qué contenido queremos recuperar y dónde queremos mostrarlo.

Para una necesidad sencilla puede bastar con este ejemplo. Y cuando el proyecto requiere filtros, taxonomías, campos personalizados, AJAX u otras reglas, podemos utilizar la misma base para construir una funcionalidad completamente adaptada al sitio.

Escrito por

Hugo Calixto

¡Hola! Soy Hugo Calixto, Desarrollador Web y Experto en SEO con más de 15 años de experiencia. Mi Enfoque: Desarrollo Web de Páginas y Tiendas Online con CMS WordPress o CMS Personalizado; Consultoría SEO orientada a resultados; Alojamiento WEB de alta calidad y seguridad. Ser polivalente es necesario en los tiempos actuales. Aporto experiencia en diversas áreas para ofrecer soluciones económicas y eficaces a mis clientes.