Shortcode con atributos
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
echocausaría que el contenido aparezca en el lugar incorrecto de la página.
