Cum să transmiți date de la o pagină la altă pagină/fișier în WordPress

12 apr. 2013, 06:42:23
Vizualizări: 19.6K
Voturi: 1

Am o temă personalizată în WordPress. Aceasta este calea către tema mea personalizată: C:\wamp\www\wordpress2\wp-content\themes\sscy1002\sscy1002

Am creat o Pagină în WordPress care conține câteva elemente de formular. Iată codul Paginii mele:

<form action="<?php bloginfo('stylesheet_directory'); ?>/Query.php" enctype="multipart/form-data" method="post" name="contact">
<label for="author">Nume:</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">Subiect:</label> <input class="input_field" id="subject" type="text" name="subject" />
    <div class="cleaner h10"></div>
    <label for="text">Mesaj:</label> <textarea class="required" id="text" cols="0" name="text" rows="0"></textarea>
    <div class="cleaner h10"></div>
    <label for="image">Imagine:</label><input type="file" name="file" />

    <input class="submit_btn float_l" id="submit" type="submit" name="submit" value="Trimite" />
    <input class="submit_btn float_r" id="reset" type="reset" name="reset" value="Resetează" />

    </form>

Și iată codul meu Query.php din directorul C:\wamp\www\wordpress2\wp-content\themes\sscy1002\sscy1002:

<?php
get_header();
?>

<?
$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='imagine'>";
?>
<?php
get_footer();
?>

Dar când trimit formularul primesc o eroare fatală:

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

Te rog ajută-mă să înțeleg cum să transmit date de la o pagină la alt fișier (sau la o altă Pagină) în WordPress. Am căutat răspunsuri pe Google și am încercat toate metodele găsite, dar nimic nu funcționează.

Îmi cer scuze pentru formatarea greșită a întrebării. Te rog ajută-mă!!!! Mulțumesc!!!

4
Comentarii

Crează Query.php ca șablon de pagină și adaugă-l la pagină, apoi trece URL-ul acestei pagini în atributul action al formularului. http://codex.wordpress.org/Theme_Development#Custom_Page_Templates

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

Nu este nevoie să creezi un fișier șablon non-standard WordPress pentru asta. De ce nu plasezi funcționalitatea formularului tău în functions.php unde ar trebui să fie? http://tommcfarlin.com/sending-data-post/

sagalbot sagalbot
20 feb. 2014 01:33:02

Uită-te aici: http://wordpress.stackexchange.com/questions/201940/implementing-a-custom-form-in-wordpress/201942#201942 Ar trebui să salvezi datele de care ai nevoie în sesiune sau cookie, iar apoi pe a doua pagină le poți folosi...

Maikal Maikal
14 iun. 2016 04:49:15

Dar dacă nu înțelegeți care este problema: Problema este că încărcați un fișier php personalizat care nu este conectat la fișierele wordpress php, deci nu aveți funcții precum get_header, add_action etc. disponibile. Dacă doriți să creați o pagină care va prelua datele postării dvs., ar trebui să luați în considerare crearea unui șablon de pagină și trimiterea formularului către un link de pagină care are șablonul de pagină...

Maikal Maikal
14 iun. 2016 04:53:07
Toate răspunsurile la întrebare 4
0

Poți încerca să folosești functions.php pentru a gestiona trimiterea formularului și a trimite datele prin AJAX.

Adaugă un câmp ascuns în formularul tău cu acțiunea care trebuie întreprinsă (în functions.php):

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

În footer.php adaugă codul jQuery pentru a gestiona cererea 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){
       //AFIȘEAZĂ CONFIRMAREA
    },
    error: function(error){
       //AFIȘEAZĂ MESAJUL DE EROARE
    }
});
return false;
}

În final, în fișierul tău functions.php:

add_action('wp_ajax_save_contact', 'save_contact');
add_action('wp_ajax_nopriv_save_contact', 'save_contact');
function save_contact(){
     //Fă aici ce dorești...
}

Sper să te ajute! :)

4 apr. 2014 05:44:16
0

adaugă următorul cod înainte de get_header()

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

primești eroare pentru că fișierul tău nu este pentru o pagină creată cu WordPress, ci doar un fișier PHP, trebuie să incluzi fișierul load.php pentru a încărca toate funcțiile necesare.

30 iul. 2013 12:49:08
0

Ar trebui să folosești http://example.com/page-slug/

unde page-slug este pagina creată folosind Query.php ca șablon.

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

Te rog să înlocuiești calea din acțiunea formularului de la <?php bloginfo('stylesheet_directory'); ?> la <?php bloginfo('template_directory'); ?>

Apoi verifică..

17 iul. 2013 15:26:54
Comentarii

Te rog să explici, cum ar preveni aceasta eroarea Call to undefined function, pe care o întâlnește OP.

Johannes Pille Johannes Pille
17 iul. 2013 15:33:03