Usar do_shortcode() en una página de administración
Estoy usando algunos plugins que tienen shortcodes... sin embargo, en lugar de crear una página pública para el contenido, he creado algunas páginas nuevas dentro del administrador usando add_menu_page
y necesito saber cómo utilizar do_shortcode()
en este contexto.
Actualmente, la función solo devuelve el string. Supongo que es porque la API de shortcodes no está disponible en una página de administración.
¿Cómo puedo solucionar esto? No hay documentación que explique cómo utilizar shortcodes dentro del WP Admin... o si siquiera es posible.
Específicamente estoy intentando utilizar shortcodes de WooCommerce dentro del WP Admin. No me gusta que los plugins no utilicen el backend de WP para la gestión de cuentas/usuarios.

En lugar de llamar a do_shortcode()
, simplemente llama a la función asociada con el shortcode.
Ejemplo
Hay un shortcode llamado [example]
y una función registrada como manejadora del shortcode:
function example_shortcode( $atts = array(), $content = '' )
{
extract(
shortcode_atts(
array (
'before' => '',
'after' => '',
),
$atts
)
);
return $before . $content . $after;
}
add_shortcode( 'example', 'example_shortcode' );
En tu página de administrador simplemente llama a la función:
echo example_shortcode(
array ( 'before' => 'Esto ', 'after' => '!' ),
'funciona'
);
Salida: Esto funciona!
.
Más rápido y confiable que do_shortcode()
.

¡Ni siquiera había pensado en esto! Aunque nunca había usado shortcodes en el administrador (por la razón que sea) y tenía una excusa para investigar ;)

No tengo idea de por qué tampoco había pensado en esto... Voy a probarlo y reportar los resultados.

Un inconveniente de esto es que dejará de funcionar si el autor del plugin refactoriza la función callback del shortcode en el futuro. Los cambios en el shortcode probablemente serán compatibles con versiones anteriores, pero es menos probable que los nombres de funciones internas del plugin lo sean.

Parece que la API de shortcodes está disponible en el panel de administración, pero su resultado dependerá del shortcode en cuestión.
El shortcode incorporado [caption]
funciona como se espera, mientras que [embed]
no (esto se debe a cómo la API de embed "carga perezosamente" su shortcode y depende del filtro the_content
para ejecutarse, así que técnicamente no es culpa de la API de shortcodes).
Conclusión: Depende completamente de cómo y cuándo se registra el shortcode, y qué hace/asume cuando se ejecuta.
@dcolumbus ¿De qué shortcode estamos hablando en tu caso?
