Folosirea echo do_shortcode pentru Contact Form 7 dintr-un fișier php încărcat dinamic

31 aug. 2014, 20:27:00
Vizualizări: 19K
Voturi: 0

Î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
?>
3
Comentarii

$.post() este AJAX.

fuxia fuxia
31 aug. 2014 20:54:56

Mulțumesc toscho! Am menționat că sunt puțin confuz? Am modificat întrebarea. :)

Caroline Elisa Caroline Elisa
31 aug. 2014 21:06:20

Nu folosi echo do_shortcode https://kovshenin.com/2013/dont-do_shortcode/

Brad Dalton Brad Dalton
3 mar. 2015 12:18:00
Toate răspunsurile la întrebare 1
2

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.

31 aug. 2014 23:57:16
Comentarii

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

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

@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ă).

khromov khromov
1 sept. 2014 23:52:27