Utilizzo di echo do_shortcode per Contact Form 7 da un file PHP caricato dinamicamente

31 ago 2014, 20:27:00
Visualizzazioni: 19K
Voti: 0

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

$.post() è AJAX.

fuxia fuxia
31 ago 2014 20:54:56

Grazie toscho! Ho menzionato che sono un po' confuso? Domanda modificata. :)

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

Non usare echo do_shortcode https://kovshenin.com/2013/dont-do_shortcode/

Brad Dalton Brad Dalton
3 mar 2015 12:18:00
Tutte le risposte alla domanda 1
2

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.

31 ago 2014 23:57:16
Commenti

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

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

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

khromov khromov
1 set 2014 23:52:27