echo do_shortcode para Contact Form 7 desde un archivo php cargado dinámicamente
Estoy cargando un archivo php que contiene echo do_shortcode('[contact-form-7 id="568"]');
usando jQuery .load()
pero el shortcode no devuelve nada.
He visto esta pregunta y respuesta y entiendo que do_shortcode()
no está disponible: ¿Por qué podría fallar 'do_shortcode' de un plugin en una petición AJAX?
Pero no logro entender si la solución es relevante para mi configuración.
Espero que alguien pueda ayudar a aclararlo.
Gracias.
script.js
$.post(themeurl+ 'save_image.php', { base64_image: ProductDataURL }, function(data) {
if(data) {
$( '#popup-download div' ).load( themeurl+ 'downloadform.php' );
}
});
downloadform.php
<?php
if ( function_exists( 'do_shortcode ' ) ) {
echo "do_shortcode existe";
} else {
echo "do_shortcode no existe"; // esto se muestra
};
echo do_shortcode('[contact-form-7 id="568"]'); // nada
?>

Por lo que has mostrado, downloadform.php nunca carga WordPress, por lo que naturalmente do_shortcode() no está disponible.
Necesitas implementar tu AJAX usando este artículo del Codex: http://codex.wordpress.org/AJAX_in_Plugins
Otra alternativa que sugeriría es cargar el formulario de contacto en un div oculto durante la carga inicial de la página y luego mostrar el div oculto cuando los usuarios hagan clic en lo que haga que aparezca el formulario. De esa manera no necesitas ningún AJAX.

Gracias user2572827. La alternativa, cargar con la carga de la página, no es apropiada ya que tengo un campo dinámico en el formulario que se actualiza después de que se crea la imagen (ver línea 1 del código anterior). Así que estoy leyendo y haciendo mi mejor esfuerzo para entender el contenido del enlace que enviaste :)

@CarolineElisa, si estás buscando una forma fácil de exponer un endpoint JSON desde WordPress, revisa esta publicación de blog:
http://ottopress.com/2010/dont-include-wp-load-please/
Específicamente, el encabezado "La forma correcta, la segunda".
