Utilizzo di echo do_shortcode per Contact Form 7 da un file PHP caricato dinamicamente
Sto caricando un file PHP contenente echo do_shortcode('[contact-form-7 id="568"]');
utilizzando jQuery .load()
ma lo shortcode non restituisce nulla.
Ho visto questa domanda e risposta e capisco che do_shortcode()
non è disponibile: Perché 'do_shortcode' di un plugin potrebbe non funzionare in una richiesta AJAX?
Ma non riesco assolutamente a capire se la soluzione è rilevante per la mia configurazione.
Spero che qualcuno possa aiutare a fare luce sulla situazione.
Grazie.
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 esiste";
} else {
echo "do_shortcode non esiste"; // questo viene visualizzato
};
echo do_shortcode('[contact-form-7 id="568"]'); // nessun output
?>

Da quanto hai mostrato, downloadform.php non carica WordPress, quindi naturalmente do_shortcode() non è disponibile.
Devi implementare il tuo AJAX utilizzando questo articolo del Codex: http://codex.wordpress.org/AJAX_in_Plugins
Un'altra alternativa che suggerirei è caricare il modulo di contatto in un div nascosto durante il caricamento iniziale della pagina e poi mostrare il div nascosto quando gli utenti cliccano su ciò che fa apparire il modulo. In questo modo non avresti bisogno di alcun AJAX.

Grazie user2572827. L'alternativa, caricare con il caricamento della pagina, non è appropriata poiché ho un campo dinamico nel modulo che viene aggiornato dopo la creazione dell'immagine (vedi riga 1 del codice sopra). Quindi sto leggendo e cercando di capire al meglio il contenuto del link che hai inviato :)

@CarolineElisa, se stai cercando un modo semplice per esporre un endpoint JSON da WordPress, dai un'occhiata a questo articolo del blog:
http://ottopress.com/2010/dont-include-wp-load-please/
Nello specifico, il titolo "Right way the second".
