Folosirea echo do_shortcode pentru Contact Form 7 dintr-un fișier php încărcat dinamic
Încarc un fișier php care conține echo do_shortcode('[contact-form-7 id="568"]');
folosind jQuery .load()
, dar shortcode-ul nu returnează nimic.
Am văzut această întrebare și răspuns și înțeleg că do_shortcode()
nu este disponibil: De ce funcția 'do_shortcode' a unui plugin poate să nu funcționeze într-o cerere AJAX?
Dar nu reușesc să înțeleg dacă soluția este relevantă pentru configurația mea.
Sper că cineva mă poate ajuta să înțeleg.
Mulțumesc.
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 există";
} else {
echo "do_shortcode nu există"; // acest mesaj este afișat
};
echo do_shortcode('[contact-form-7 id="568"]'); // nimic
?>

Din ceea ce ai arătat, downloadform.php nu încarcă niciodată WordPress, deci firesc că do_shortcode() nu este disponibil.
Trebuie să implementezi AJAX-ul folosind acest articol din Codex: http://codex.wordpress.org/AJAX_in_Plugins
O altă alternativă pe care aș sugera-o este încărcarea formularului de contact într-un div ascuns în timpul încărcării inițiale a paginii și apoi afișarea div-ului ascuns când utilizatorii fac clic pe orice face ca formularul să apară. În acest fel nu ai nevoie de niciun AJAX.

Mulțumesc user2572827. Alternativa, încărcarea la încărcarea paginii, nu este potrivită deoarece am un câmp dinamic în formular care este actualizat după ce imaginea este creată (vezi linia 1 din codul de mai sus). Așa că citesc și încerc să înțeleg cât mai bine conținutul linkului trimis :)

@CarolineElisa, dacă cauți o modalitate ușoară de a expune un endpoint JSON din WordPress, verifică acest articol de blog:
http://ottopress.com/2010/dont-include-wp-load-please/
Mai exact secțiunea "Right way the second" (în engleză).
