我是wordpress新手,我必须在wordpress中创建自定义注册表单。我听说它可以用PHP和AJAX。左右 我的代码目前看起来像这样:(在模板文件中)
jQuery(document).on( "click", '.create-account-btn', function(){
var inputEmpty = false;
jQuery(".input__field--yoko").not("[type=submit]").each(function () {
if (jQuery.trim(jQuery(this).val()).length == 0) inputEmpty = true;
});
if (inputEmpty){
alert('Please fill all fields in the register form');
} else {
$.ajax({
type: "post",
url: "functions.php",
dataType: 'json',
data: {
action: "registerAccount",
username: $("#account-username").val(),
password: $("#account-password").val(),
email: $("#billing_email").val()
},
success:function() {
alert("I'm created!");
},
error: function() {
alert("Oh no, error! :(");
}
});
}
return false;
});
(在functions.php文件中)
function registerAccount() {
if ( isset($_REQUEST) ) {
$username = $_REQUEST['username'];
$password = $_REQUEST['password]';
$email = $_REQUEST['email'];
$user_id = wp_create_user( $username, $password, $email );
if (is_int($user_id)) {
$wp_user_object = new WP_User($user_id);
}
}
die();
}
add_action('wp_ajax_registerAccount', 'registerAccount');
问题是我在AJAX请求中得到错误函数。这两个文件都在同一个目录中,你有什么线索在这段代码中有什么不好吗?
有了Sagar的帮助,我设法让它工作,所以它不再运行错误功能,现在它调用成功功能,但是没有创建wordpress帐户,请帮助我。
答案 0 :(得分:0)
这是ajaxurl,其中包含wp_head
<?php function frontend_custom_ajaxurl() { ?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}
add_action('wp_head','frontend_custom_ajaxurl');
这是你的php函数可以执行任何操作并将此代码放在functions.php
function your_function() {
parse_str($_POST['data'], $params);
print_r($params)
exit;
}
add_action('wp_ajax_your_function', 'your_function');
add_action('wp_ajax_nopriv_your_function', 'your_function');
这是JQuery。
jQuery(".create-account-btn").submit(function() {
var data = {
action: 'your_function', // here php function such as your_function
data: jQuery(".create-account-btn").serialize(),
};
jQuery.post(ajaxurl, data, function(response) {
......................
},'json');
});