WordPress形成麻烦

时间:2013-11-05 21:20:14

标签: javascript php jquery wordpress

这里需要一些帮助,我正在构建一个单页wordpress主题,我真的不知道如何在不加载的情况下提交联系表单。基本上我的所有代码都在index.php上。

这是get_header()上面的表单提交php代码;它工作正常但我无法在不加载页面的情况下提交。

if(isset($_POST['user_submit'])) {

$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );

$name = esc_html($_POST['user_name']);
$email = esc_html($_POST['user_email']);
$comment = esc_html($_POST['user_message']);
$website = esc_html($_POST['user_url']);

$msg = esc_attr('Name: ', 'silver') . $name . PHP_EOL;
$msg .= esc_attr('E-mail: ', 'silver') . $email . PHP_EOL;
$msg .= esc_attr('Website: ', 'silver') . $website . PHP_EOL;
$msg .= esc_attr('Message: ', 'silver') . $comment;

$to = get_option( 'admin_email' );
$sitename = get_bloginfo('name');
$subject = '[' . $sitename . ']' . ' New Message';
$headers = 'From: ' . $name . ' <' . $email . '>' . PHP_EOL;
wp_mail($to, $subject, $msg, $headers);

}

这是我正在使用的jQuery帖子:

$( "#contact_form" ).submit(function( event ) {

event.preventDefault();             
var $form     = $( this ),           
     name     = $form.find( "input[name='user_name']" ).val(),
     email    = $form.find( "input[name='user_email']" ).val(),       
     website  = $form.find( "input[name='user_url']" ).val(),         
     comment  = $form.find( "input[name='user_message']").val();    

$.post( templateDir + "/index.php", { website : website, comment : comment, name : name, email : email, submit : "yes" } ); 
});

这是网站http://silviuandrei.eu/themes/bornagain/

2 个答案:

答案 0 :(得分:1)

您正在检查user_submit POST变量:

if(isset($_POST['user_submit']))

但是通过$.post

发送不同的变量
$.post( templateDir + "/index.php", { website : website, ..... submit : "yes" } ); 

将其更改为user_submit : "yes"

答案 1 :(得分:0)

我建议使用 init 操作在 functions.php 中执行此操作:

add_action('init','form_submits');
function form_submits() {
    if( isset($_REQUEST['user_submit']) ){
        require("process_post.php");
        exit;//prevents the default blog output
    }
}

请注意,使用 require 只是建议保持 functions.php 清洁。