2016-06-22 3 views
0

Я новичок в Wordpress, и мне нужно создать пользовательскую форму регистра в wordpress. Я слышал, что он может работать с PHP и AJAX.
Мой код выглядит следующим образом в данный момент: (В файле шаблона)Пользовательская форма регистрации в wordpress

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

вы не можете сделать запрос вы functions.php непосредственно Вы должны использовать WP-администратора-Аякса метод –

ответ

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'); 
}); 
Смежные вопросы