Aprende cómo listar todos los shortcodes que tienes disponibles en tu sitio web, ya sea shortcodes que vienen por defecto en WordPress o shortcodes que se han creado debido a los plugins que tienes instalados.
Generalidades
En un artículo anterior vimos qué son los Shortcodes y cómo usarlos, en muchos casos es posible que necesites saber todos los shortcodes que tienes en tu sitio, ya sea para usarlo como parte del contenido de entradas y páginas o simplemente para tener una mejor administración.
Código para listar los Shortcodes disponibles
El siguiente código te listará los shortcodes de tu sitio WordPress en la parte inferior de tu theme en el front-end de tu sitio, y sólo será visible para usuarios administradores. Puedes colocar este código al final de tu archivo functions.php de tu child-theme.
function dcms_show_shortcodes() {
if (current_user_can( 'manage_options' ) ) {
global $shortcode_tags;
echo '<pre>';
print_r($shortcode_tags);
echo '</pre>';
}
}
add_action( 'wp_footer', 'dcms_show_shortcodes' );
En el código anterior:
- Usamos el hook wp_footer de WordPress el cual hace referencia a la función dcms_show_shortcodes
- En la función hacemos una comprobación con la función current_user_can para saber si el usuario es administrador
- Hacemos referencia a la variable global $shortcode_tags que tiene la información de los shortoces como array
- Imprimimos las etiquetas pre de HTML para que se liste conservando el formato de array
- Dentro del HTML imprimimos el array con la función print_r
Resultado Final
Al final obtendremos algo similar a lo que se muestra en la siguiente imagen:

¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores.
Hola John. Cómo el tip me ha parecido muy práctico y hace tiempo que buscaba algo así he intentado utilizarlo; pero al guardar el código wordpress me devuelve una página con un gigantesco “403 Forbidden Access to this resource on the server is denied.”
Una pena, porque me venía de perlas y creo que no voy a poder utilizarlo.
Hola de nuevo. El problema que te refiero en el comentario anterior me surge cuando intento agregar el código a través de mi plugin Code Snippet.
Después he intentado agregarlo directamente en el archivo functions.php de mi childtheme, y ahí tampoco me permite agregarlo, generando el siguiente mensaje:
“Algo fue mal. Tu cambio no se ha podido guardar. Por favor, inténtalo de nuevo. También es posible que tengas que arreglarlo manualmente y subir el archivo por FTP.”
¿Se te ocurre cual puede ser el problema por el que no puedo agregarlo?
Un saludo
Hola
Con respecto al plugin de snippets, es muy raro, no lo he probado pero teóricamente si que debería funcionar.
Con respecto a editar directamente el archivo, es posible que estes editando el archivo functions.php desde el propio WordPress, no te recomiendo hacerlo de esa forma, al menos en las versiones actuales tiene muchas restricciones, lo mejor sería que edites tu functions.php por FTP o usar el Administrador de Archivos de tu Cpanel. Saludos.
Hola John
Como habías deducido estaba editando el archivo functions.php desde WordPress. Al intentarlo desde cPanel también me lo impedía, por lo que me puse en contacto con el hosting.
Me sugirieron desactivar temporalmente las reglas de seguridad (“Mod Security”) del hosting a través de cPanel, y trás hacerlo si que he podido agregar el fragmento de código.
Al final lo he hecho a través del plugin Code Snippet, que me permite activar/desactivar con facilidad, así como tener todos los códigos de personalización fácilmente localizables.
Un saludo y gracias por compartir
Hola. Tengo una duda. No se si sea por aca pero la planteo. quiero editar un shortcode que ya existe, hay alguna forma de hacerlo o verlo? Gracias
Hola, si que podrías editarlo, aunque posiblemente tengas que modificar el tema o plugin que lo crea, tendrías que buscar la función add_shortcode y ver a qué función hace referencia, revisa el siguiente artículo de guía: https://decodecms.com/que-son-los-shortcodes-en-wordpress-y-como-usarlos/
Hola. Lo he probado y me ha ido de perlas. Gracias. Ahora tengo un problema ¿Cómo lo elimino? porque lo he borrado de functions.php y sigue apareciendo. Gracias por tu respuesta. Un saludo
Hola, tras borrarlo del functions.php deberia ser suficiente, tal vez sea algo de cache de tu navegador si aún lo sigues viendo.
Gracias, Jhon.