Ejemplo:
<?phpfunctionprefijo_nombreShortcode($atts= [],$content= null,$tag= ''){// Para evitar errores de escritura podemos poner los nombres de// attributos q se pasan en minúsculas, no es obligatorio.$atts= array_change_key_case((array)$atts, CASE_LOWER);
// Podemos poner valores por defecto a los atributos pasados$wporg_atts= shortcode_atts(['title'=> 'WordPress.org'],$atts, $tag);
// Crea una variable con el contenido de salida$o= '';$o.= '<div class="wporg-box">';$o.= '<h2>'. esc_html__($wporg_atts['title'], 'wporg') .'</h2>';if(!is_null($content)) {$o.= apply_filters('the_content', $content);
$o.= do_shortcode($content);}
$o.= '</div>';
// Devuelve el Html que enviará el sortcodereturn$o;}
// Registra el Shortcodefunctionprefijo_nombreShortcode_registrar(){add_shortcode('wporg', 'prefijo_nombreShortcode');}
// Asegura q se ejecute el registro del shortCodeadd_action('init', 'prefijo_nombreShortcode_registrar');
Esto podemos añadir en el functions.php (caca, no hacer), o meterlo en un plugin propio.