Come passare dati da una pagina a un altro file/pagina in WordPress

12 apr 2013, 06:42:23
Visualizzazioni: 19.6K
Voti: 1

Ho un tema personalizzato in WordPress. Questo è il percorso del mio tema personalizzato: C:\wamp\www\wordpress2\wp-content\themes\sscy1002\sscy1002

Ho creato una Pagina in WordPress che contiene alcuni elementi di form. Ecco il codice della mia Pagina:

<form action="<?php bloginfo('stylesheet_directory'); ?>/Query.php" enctype="multipart/form-data" method="post" name="contact">
<label for="author">Nome:</label> <input class="required input_field" id="author" type="text" name="author" />
    <div class="cleaner h10"></div>
    <label for="email">Email:</label> <input class="validate-email required input_field" id="email" type="text" name="email" />
    <div class="cleaner h10"></div>
    <label for="subject">Oggetto:</label> <input class="input_field" id="subject" type="text" name="subject" />
    <div class="cleaner h10"></div>
    <label for="text">Messaggio:</label> <textarea class="required" id="text" cols="0" name="text" rows="0"></textarea>
    <div class="cleaner h10"></div>
    <label for="image">Immagine:</label><input type="file" name="file" />

    <input class="submit_btn float_l" id="submit" type="submit" name="submit" value="Invia" />
    <input class="submit_btn float_r" id="reset" type="reset" name="reset" value="Resetta" />
</form>

E questo è il mio codice Query.php nella directory C:\wamp\www\wordpress2\wp-content\themes\sscy1002\sscy1002:

<?php
get_header();
?>

<?php
$name=$_POST['author'];
$email=$_POST['email'];
$subject=$_POST['subject'];
$message=$_POST['text'];
$image=$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'],"imagess/".$image);
echo $name."<br/>";
echo $email."<br/>";
echo $subject."<br/>";
echo $message."<br/>";
echo "<img src='imagess/".$image."' alt='Immagine caricata'>";
?>
<?php
get_footer();
?>

Ma quando invio il form ottengo un errore fatale:

Fatal error: Call to undefined function get_header() in C:\wamp\www\wordpress2\wp-content\themes\sscy1002\sscy1002\Query.php on line 2

Per favore aiutami a capire come trasferire dati da una pagina a un altro file (o a un'altra Pagina) in WordPress. Ho cercato risposte su Google e provato tutte le soluzioni trovate ma nulla funziona.

Scusa per la formattazione sbagliata della domanda. Per favore aiutami!!!! Grazie!!!

4
Commenti

Crea Query.php come template di pagina e aggiungilo alla pagina, quindi passa l'URL di questa pagina nell'attributo action del form.http://codex.wordpress.org/Theme_Development#Custom_Page_Templates

Vinod Dalvi Vinod Dalvi
12 apr 2013 07:23:12

Non è necessario creare un file template non standard per WordPress per questo. Perché non inserire la funzionalità del tuo form direttamente in functions.php dove dovrebbe essere? http://tommcfarlin.com/sending-data-post/

sagalbot sagalbot
20 feb 2014 01:33:02

Dai un'occhiata qui: http://wordpress.stackexchange.com/questions/201940/implementing-a-custom-form-in-wordpress/201942#201942 Dovresti salvare i dati necessari nella sessione o nei cookie e poi nella seconda pagina potresti utilizzarli...

Maikal Maikal
14 giu 2016 04:49:15

Ma se non capisci qual è il problema: Il problema è che stai caricando un file php personalizzato che non è connesso ai file php di WordPress, quindi non hai a disposizione funzioni come get_header, add_action, ecc. Se vuoi creare una pagina che prenderà i dati del tuo post, dovresti considerare la creazione di un template di pagina e inviare il form a un link di pagina che ha il template di pagina...

Maikal Maikal
14 giu 2016 04:53:07
Tutte le risposte alla domanda 4
0

Puoi provare a utilizzare functions.php per gestire l'invio del modulo e inviare i dati via AJAX.

Aggiungi un campo nascosto nel tuo modulo con l'azione da eseguire (su functions.php):

<input type="hidden" name="action" value="save_contact"/>

Nel tuo footer.php aggiungi il codice jQuery per gestire la richiesta AJAX:

jQuery('#your-form').submit(ajaxSubmit);
function ajaxSubmit(e){
    e.preventDefault();
var formData = jQuery(this).serialize()

jQuery.ajax({
    type:"POST",
    url: "<?php bloginfo('url'); ?>/wp-admin/admin-ajax.php",
        data: formData,
        success: function(response){
       //MOSTRA CONFERMA
    },
    error: function(error){
       //MOSTRA MESSAGGIO DI ERRORE
    }
});
return false;
}

Infine, nel tuo file functions.php:

add_action('wp_ajax_save_contact', 'save_contact');
add_action('wp_ajax_nopriv_save_contact', 'save_contact');
function save_contact(){
     //Fai quello che vuoi qui...
}

Spero sia utile! :)

4 apr 2014 05:44:16
0

aggiungi il seguente codice prima di get_header()

require_once('../../../wp-load.php');

stai ricevendo un errore perché il tuo file non è una pagina creata con WordPress, è semplicemente un file PHP. Devi includere il file load.php per caricare tutte le funzioni richieste.

30 lug 2013 12:49:08
0

Dovresti utilizzare http://example.com/page-slug/

dove page-slug è la pagina creata utilizzando Query.php come template.

<form action="http://example.com/page-slug/" enctype="multipart/form-data" method="post" name="contact">
18 apr 2015 12:58:12
1
-3

Per favore sostituisci il percorso dell'azione del form da <?php bloginfo('stylesheet_directory'); ?> a <?php bloginfo('template_directory'); ?>

Poi verificalo..

17 lug 2013 15:26:54
Commenti

Per favore, spiega come ciò potrebbe prevenire l'errore Call to undefined function che l'utente sta riscontrando.

Johannes Pille Johannes Pille
17 lug 2013 15:33:03