wordpress中的自定义注册表单

时间:2016-06-22 13:43:58

标签: php jquery ajax wordpress

我是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帐户,请帮助我。

1 个答案:

答案 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');
});