CMS WordPress

[WordPress] Anidando Shortcodes

[titulo]¿Cómo poner un shortcode dentro de otro?[/titulo]

Como ya hablamos en el artículo «¿Qué son los shortcodes y cómo personalizar tus artículos con ellos?«, una de sus propiedades era que permitían el anidamiento. Esto es, poner un shortcode dentro de otro.

Ej: [codigo][subraya color=»verde»]En un lugar de [texto_negrita]la Mancha[/texto_negrita] de cuyo nombre…[/subraya][/codigo]

 

Los shortcodes desarrollados por WordPress, temas de terceros o algunos plugins, ya permiten este comportamiento de base. Pero [subraya_verde]si somos nosotros quienes estamos creando los nuestros, debemos realizar una pequeña modificación. En caso contrario, los shortcodes anidados no se ejecutarán[/subraya_verde].

 

Recordemos rápidamente que, para crear un shortcode propio, debemos ir al archivo functions.php de nuestro tema, y añadir algo como lo siguiente:

/*Shortcode para el estilo de subrayado en rosa */
function shortcode_subrayarosa( $atts, $content = null ) {
 return '<span class="subraya_rosa">' . $content . '</span>';
}
add_shortcode( 'subraya_rosa', 'shortcode_subrayarosa' );

Donde [codigo][*subraya_rosa][/codigo] será el shortcode.

 

Ahora bien, si queremos poder poner otros shortcodes dentro de éste, habrá que llamar a la función de WordPress [codigo]do_shortcode()[/codigo], quedando algo como:

/*Shortcode para el estilo de subrayado en rosa */
function shortcode_subrayarosa( $atts, $content = null ) {
 return '<span class="subraya_rosa">' . do_shortcode($content) . '</span>';
}
add_shortcode( 'subraya_rosa', 'shortcode_subrayarosa' );

 

 

¿Te ha parecido útil la entrada? ¡Compártela para ayudarnos a nosotros y a los demás!

Cristian Sarabia Martínez

Desde que a principios de los 90 mi padre desempolvó su Spectrum, no he dejado de probar y experimentar con la tecnología.

Enamorado del mundo web, Full Stack Developer de profesión y diseñador por devoción.

Ahora hago mis pinitos en esto del blogging para compartir con vosotros un poquito de todo lo que la comunidad me ha dado.

2 Comentarios

Haz clic aquí para dejar tu comentario

  • Hola Cristian. es un gusto saludarte. Me gustaria saber si puedes ayudarme a realizar una funcion reccursiva que tiene su shortcode y que esta trabajando bien hasta el momento pero con un solo nivel de funcion. necesito hacerla recursiva, y hacerla en otro shortcode diferente para una estructura hijo-padre-abuelo-bisabuelo-tatarabuelo,…. hasta maximo 10 niveles arriba. la funcion funciona solo hasta el padre, envia un pantallazo de respuesta pero haciendo un click en un enlace y te muestra el dato de el abuelo en el refresco de la pagina, y al hacer click en el mismo enlace, entonces arroja una pagina con los datos de el bisabuelo, y asi sucesivamente, pero lo hace MANUAL, requiero que pueda hacerlo de manera automatica. he analizado el codigo y creo que alguien con experiencia suficiente en programacion podria ayudarme a solucionarlo rapido. son algo asi como 12 lineas de codigo. quedo atento a su respuesta, vivo en colombia y mi numero es 3106002625 RODOLFO

  • Hola Cristian. es un gusto saludarte. en este ejemplo muestras los shortcodes de diferentes contenidos, que sucede cuanod el shortcode que existe desea ser anidado n veces, ejemplo como cuando el shortcode te devuelve la informacion de el padre, pero a su vez se quiere que envie la informacion de el abuelo, y luego de el bisabuelo y asi sucesivamente. MI short code hace eso, devolver la informacion de el padre de un ID en wordpress, y la idea es que de este padre devuelva a su padre tambien, es decir de el abuelo de el ID(HIJO) y asi sucesivamente devuelva el arbol genealogico ascendente, sea por ID, email o nickname. ? Podrias ayudarme con esto?