Agregar shortcode dentro del HTML sin procesar de Visual Composer
Estoy usando Visual Composer y he ingresado HTML en un elemento Raw HTML para una tabla de precios personalizada - Ahora me gustaría poder usar el plugin World Currency para mostrar precios en diferentes monedas.
El shortcode para World Currency es:
[worldcurrency curr="EUR" value="25"]
Cuando lo ingreso en el Raw HTML se muestra como texto exactamente como arriba.
Si lo ingreso usando:
<?php echo do_shortcode('[worldcurrency curr="EUR" value="25"]'); ?>
no se muestra nada y al revisar el código fuente todo el echo aparece comentado en el HTML.
También intenté ingresar el HTML en un bloque de texto pero cosas como los tooltips ya no funcionan correctamente y cuando se ingresa como texto en lugar de visual pierdo totalmente la capacidad de editar el texto.
¿Hay alguna forma de usar el shortcode dentro del Raw HTML u otro elemento dentro de Visual Composer que me permita usar el shortcode y HTML?

Cuando observas cómo funciona realmente do_shortcode()
, es esto:
do_shortcode( $content )
Donde $content
se define de la siguiente manera:
(string)
Contenido en el que buscar shortcodes
Lo que intentas hacer es echo
lo que hace el shortcode, lo que lleva a una suposición errónea. No hay una función mágica que descubra tu shortcode. El shortcode simplemente es un callback (una función o un método) asociado a una cadena que puedes poner entre corchetes en el contenido de texto completo. Cuando el contenido se lee durante el ciclo de vida/tiempo de ejecución y se encuentra, entonces el callback asociado se ejecuta en su lugar. Básicamente lo mismo que sucede con acciones y filtros. Así que
add_shortcode( 'bartag', 'bartag_func' );
permite esto
[bartag foo="bar"]
donde bartag_func
es el callback. Por ejemplo:
function bartag_func( $atts )
{
$args = shortcode_atts( array(
'foo' => 'no foo',
'baz' => 'default baz',
), $atts );
return "foo = {$args['foo']}";
}
Lo que estás (o deberías estar) buscando es dónde se agrega el shortcode con add_shortcode()
. Luego solo encuentra el callback (por ejemplo, la función bartag_func()
) y ejecútala o hazle echo
echo bartag_func();
Eso es todo.
