Shortcode con atributos

Php marzo 10, 2026

Los shortcodes son etiquetas personalizadas que los editores pueden insertar en el contenido con corchetes, como [aviso]. Son ideales para crear componentes reutilizables — cajas de aviso, botones, tablas de precios — sin que el editor necesite escribir HTML. Siempre deben devolver HTML con return, nunca con echo.

Casos de uso: cajas de advertencia o información en posts, botones de llamada a la acción, bloques de contenido destacado insertables desde el editor clásico o desde widgets de texto.

<?php
add_shortcode( 'aviso', 'shortcode_aviso' );
function shortcode_aviso( $atts, $content = '' ) {
    $atts = shortcode_atts( array(
        'tipo'   => 'info',
        'titulo' => '',
    ), $atts, 'aviso' );

    $tipo   = sanitize_html_class( $atts['tipo'] );
    $titulo = sanitize_text_field( $atts['titulo'] );

    $html  = '
'; if ( $titulo ) { $html .= '' . esc_html( $titulo ) . ''; } $html .= '

' . wp_kses_post( $content ) . '

'; $html .= '
'; return $html; } // Uso: [aviso tipo="success" titulo="Bien hecho"]Mensaje aquí[/aviso]

¿Qué hace cada parte?

  • add_shortcode(): registra el shortcode con su nombre (aviso) y la función que lo procesa.
  • $atts: array de atributos pasados en el shortcode, como tipo="success".
  • shortcode_atts(): combina los atributos recibidos con los valores por defecto. Cualquier atributo no definido en el shortcode cogerá el valor del array por defecto.
  • $content: el texto entre las etiquetas de apertura y cierre del shortcode. La función acepta shortcodes con cierre ([aviso]...[/aviso]).
  • sanitize_html_class(): limpia el valor para usarlo seguro como clase CSS, evitando que se inyecte HTML malicioso.
  • wp_kses_post(): filtra el contenido permitiendo solo las etiquetas HTML seguras para el contenido de un post (párrafos, negritas, enlaces, etc.).
  • return en lugar de echo: los shortcodes deben devolver el HTML, no imprimirlo. Usar echo causaría que el contenido aparezca en el lugar incorrecto de la página.