Mostrar últimas noticias usando un Shortcode

Tabla de contenidos

Vamos a crear un Shortcode para poner las últimas noticias de nuestro blog en cualquier parte de nuestra web, por ejemplo en la portada, en alguna página de información, etc.

Shortcode últimas noticias, ¿cómo funciona?

El siguiente shortcode se llamará [ultimas_noticias] y estará definido como límite de noticias en 3 y como que no oculte ninguna noticia de ninguna categoría. Pero podemos decir cuantas noticias queremos que muestre así como que categorías queremos que estén descartadas para no mostrar sus noticias. Para entender mejor la estructura de un shortcode personalizado, puedes consultar la documentación oficial de WordPress sobre shortcodes en el Handbook de desarrolladores.

Ejemplo:
Si queremos que muestre por ejemplo 4 noticias usaremos la variable limite.

[ultimas_noticias limite=4]

Ejemplo:
Si queremos que no muestre ninguna noticia de ciertas categoría, añadiremos los IDs de las categorías a ocultar, usando la variable no_mostrar.

[ultimas_noticias limite=6 no_mostar=2,4]

Añadiendo shortcode que muestre las últimas noticias

Para ello tenemos que ir a nuestro functions.php del tema y añadir el siguiente código:

/* ------------------------------------------------ */
/* ------------------------------------------------ */
/* SHORTCODE "ÚLTIMAS NOTICIAS"                     */
/* ------------------------------------------------ */
/* ------------------------------------------------ */

function saca_noticias($atts){
  $atts = shortcode_atts ( array (
    'limite' => 3,
    'no_mostrar' => ''
    ), $atts );
    $query = array(
      'posts_per_page' => $atts['limite'],
      'category__not_in' => explode(",", $atts['no_mostrar']),
      'orderby'=> 'date', 
      'order'=>'DESC', 
      'post_status' => 'publish'
    );
    $q = new WP_Query($query);
    if ($q->have_posts()) :
        $noticias .= '<style>p.read-more-container{margin-top: 15px;} .noticia img {width: 100%;margin-bottom: 10px;}</style>';
        $noticias .= '<div id="ultimas-noticias">';
        $noticias .= '<div class="container">';
        $noticias .= '<div class="row">';
      while ($q->have_posts()) : $q->the_post();
        $noticias .= '<div class="col-md-4">';
        $noticias .= '<div class="noticia">';
        $noticias .= '<div class="img-noticia">';
        $noticias .= '<a href="'.get_permalink().'" title="'.sprintf( "Enlace permanente a %s", get_the_title() ).'">';
        $noticias .= get_the_post_thumbnail(get_the_id(),'medium' ,array('title'=>get_the_title(),'alt'=>get_the_title(),'class'=>'imagnew'));
        $noticias .= '</a>';
        $noticias .= '</div>';
        $noticias .= '<div class="tnoticia">';
        $noticias .= '<h3>'.get_the_title().'</h3>';
        $noticias .= '<div><small>'.get_the_date().'</small></div>';
        $noticias .= get_the_excerpt();
        $noticias .= '</div>';
        $noticias .= '</div>';
        $noticias .= '</div>';
      endwhile;
    wp_reset_query();
    $noticias .= '</div>';
    $noticias .= '</div>';
    $noticias .= '</div>';
    endif;
  return $noticias;
}
add_shortcode('ultimas_noticias','saca_noticias');

 

Crear shortcode últimas noticias WordPress

  • Por defecto el shortcode exhibe 3 noticias, pero puedes cambiar el número con la variable limite
  • Excluye categorías específicas de la visualización usando la variable no_mostrar con sus IDs
  • El código debe insertarse en el archivo functions.php del tema WordPress activo
  • Las noticias se ordenan por fecha descendente y solo muestra artículos publicados
Imagen de Jose Hilario
Jose Hilario
¡Apasionado del diseño web! Especializado en WordPress, WooCommerce y Elementor PRO. Me encanta diseñar páginas web atractivas y optimizadas para SEO. Mi objetivo: impulsar a las empresas con un diseño web atractivo y funcional.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

tres × cuatro =

Categorías
Portfolio de diseño web en WordPress

¿Necesitas una web? Contacta con nosotros.

Relacionados: