Pasar datos de una página a otro archivo/página en WordPress

12 abr 2013, 06:42:23
Vistas: 19.6K
Votos: 1

Tengo mi tema personalizado en WordPress. Esta es la ruta de mi tema personalizado: C:\wamp\www\wordpress2\wp-content\themes\sscy1002\sscy1002

He creado una Página en WordPress que contiene algunos elementos de formulario. Aquí está el código de mi Página:

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

    <input class="submit_btn float_l" id="submit" type="submit" name="submit" value="Enviar" />
    <input class="submit_btn float_r" id="reset" type="reset" name="reset" value="Restablecer" />

    </form>

Y aquí está mi código Query.php bajo el directorio 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='Imagen subida' title='Imagen subida por el usuario'>";
?>
<?php
get_footer();
?>

Pero cuando envío el formulario obtengo un error fatal:

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

Por favor ayúdame a pasar datos de una página a otro archivo (o página) en WordPress. También busqué respuestas en Google e intenté todas las soluciones que encontré pero no funcionan.

Disculpa por el formato incorrecto de la pregunta. ¡Por favor ayúdame! ¡Gracias!

4
Comentarios

Crea Query.php como plantilla de página y añádela a la página, luego pasa la URL de esta página en el atributo action del formulario.http://codex.wordpress.org/Theme_Development#Custom_Page_Templates

Vinod Dalvi Vinod Dalvi
12 abr 2013 07:23:12

No es necesario crear un archivo de plantilla no estándar de WP para esto. ¿Por qué no colocar la funcionalidad de tu formulario en functions.php donde debería estar? http://tommcfarlin.com/sending-data-post/

sagalbot sagalbot
20 feb 2014 01:33:02

Echa un vistazo aquí: http://wordpress.stackexchange.com/questions/201940/implementing-a-custom-form-in-wordpress/201942#201942 Necesitarías guardar los datos que necesitas en una sesión o cookie y luego en la segunda página podrías usarlos...

Maikal Maikal
14 jun 2016 04:49:15

Pero si no entiendes cuál es el problema: El problema es que estás cargando un archivo php personalizado que no está conectado a los archivos php de WordPress, por lo que no tienes funciones como get_header, add_action, etc. disponibles. Si quieres crear una página que tome los datos de tu publicación, deberías considerar crear una plantilla de página y enviar el formulario a un enlace de página que tenga dicha plantilla...

Maikal Maikal
14 jun 2016 04:53:07
Todas las respuestas a la pregunta 4
0

Puedes intentar usar functions.php para manejar el envío del formulario y enviar los datos mediante AJAX.

Añade un campo oculto en tu formulario con la acción a realizar (en functions.php):

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

En tu footer.php añade el código jQuery para manejar la petición 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){
       //MUESTRA LA CONFIRMACIÓN
    },
    error: function(error){
       //MUESTRA EL MENSAJE DE ERROR
    }
});
return false;
}

Finalmente, en tu archivo functions.php:

add_action('wp_ajax_save_contact', 'save_contact');
add_action('wp_ajax_nopriv_save_contact', 'save_contact');
function save_contact(){
     //Haz lo que necesites aquí...
}

¡Espero que te ayude! :)

4 abr 2014 05:44:16
0

agrega el siguiente código antes de get_header()

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

estás recibiendo un error porque tu archivo no es para una página creada con WordPress, es solo un archivo php, necesitas incluir el archivo load.php para cargar todas las funciones requeridas.

30 jul 2013 12:49:08
0

Debes usar http://example.com/page-slug/

donde page-slug es una página creada usando Query.php como plantilla.

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

Por favor, reemplaza la ruta de acción del formulario de <?php bloginfo('stylesheet_directory'); ?> a <?php bloginfo('template_directory'); ?>

Luego verifícalo..

17 jul 2013 15:26:54
Comentarios

Por favor, explica cómo eso evitaría el error Call to undefined function que está recibiendo el OP.

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