echo do_shortcode para Contact Form 7 desde un archivo php cargado dinámicamente

31 ago 2014, 20:27:00
Vistas: 19K
Votos: 0

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
?>
3
Comentarios

$.post() es AJAX.

fuxia fuxia
31 ago 2014 20:54:56

¡Gracias toscho! ¿Mencioné que estoy un poco despistado? Pregunta modificada. :)

Caroline Elisa Caroline Elisa
31 ago 2014 21:06:20

No uses echo do_shortcode https://kovshenin.com/2013/dont-do_shortcode/

Brad Dalton Brad Dalton
3 mar 2015 12:18:00
Todas las respuestas a la pregunta 1
2

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.

31 ago 2014 23:57:16
Comentarios

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 :)

Caroline Elisa Caroline Elisa
1 sept 2014 19:08:55

@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".

khromov khromov
1 sept 2014 23:52:27