Не могу добавить пользователя из переднего конца с PHP - PullRequest
0 голосов
/ 08 марта 2019

Я работаю в системе только с внешним интерфейсом, и мне нужен способ для добавления администратором пользователя из внешнего интерфейса.

Однако я не могу заставить его работать. Любая помощь будет оценена.

вот мой код, я звоню через AJAX

$( "#createuser" ).click(function() {
  var getusername = $("#usernameset").val();
  var getpassword = $("#userpasswordset").val();
  var getemail = $("#useremailset ").val();
  var getlocation = $(".country_id_set").html();

  adduserfrontend(getusername,getpassword,getemail,getlocation);
});

function adduserfrontend(username,password,email,location) {
  $.ajax ({
      url: "http://localhost/wordpress/wp-content/themes/example/functions.php",
      type: 'POST',
      data: {
          action: 'addnewuser',
          'username': username,
          'password': password,
          'email': email,
          'location': location,
      },
      success: function (results) {
          console.log( 'New user was added' );
      },
      fail: function(data) {
          console.log( data.responseText );
          console.log( 'Request Failed' + data.statusText );
      }
  })
}
<div class="adduser">
<label>Username: </label><input type="text" id="usernameset" name="usernameset" placeholder="New User">
<label>Password: </label><input type="text" id="userpasswordset" name="userpasswordset" placeholder="Enter Password">
<label>Email: </label><input type="text" id="useremailset" name="useremailset" placeholder="example@example.com">
<button id="createuser">Create User</button>
</div>

PHP

function addnewuser() {
  $username = sanitize_text_field( $_POST['username'] );
  $pasword = sanitize_text_field( $_POST['password'] );
  $email = sanitize_text_field( $_POST['email'] );
  $location = sanitize_text_field( $_POST['location'] );
  // add new user
  $user_id = wp_create_user( $username, $pasword, $email );
  $user_id_role = new WP_User($user_id);
  $user_id_role->location($location);

    exit;
}

add_action( 'wp_ajax_addnewuser', 'addnewuser' );

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

function user_profile_enqueue() {

    // Register script for localization
    wp_register_script (
        'user-profile-mod',
        get_template_directory_uri() . '/js/example.js',
        array( 'jquery' ),
        '1.0',
        true
    );

    // Localize script so we can use $ajax_url
    wp_localize_script (
        'user-profile-mod',
        'user_meta_ajax',
        array(
            'ajaxurl'   => admin_url( 'admin-ajax.php' )
        )
    );



    // Enqueue script
    wp_enqueue_script( 'user-profile-mod' );

}
add_action( 'wp_enqueue_scripts', 'user_profile_enqueue' );

плакат выше был верным. мне нужно было включить admin-ajax.php, Но я пошел этим путем.

0 голосов
/ 08 марта 2019

Используйте это в коде JS

url: '<?php echo admin_url( "admin-ajax.php" ); ?>

Также вы использовали неправильный способ вызова AJAX в WordPress Используйте этот метод

    add_action( 'wp_ajax_addnewuser', 'addnewuser' );
    add_action( 'wp_ajax_nopriv_addnewuser', 'addnewuser' );

    function addnewuser() {
        $username = sanitize_text_field( $_POST['username'] );
  $pasword = sanitize_text_field( $_POST['password'] );
  $email = sanitize_text_field( $_POST['email'] );
  $location = sanitize_text_field( $_POST['location'] );
  // add new user
  $user_id = wp_create_user( $username, $pasword, $email );
  $user_id_role = new WP_User($user_id);
  $user_id_role->location($location);

    exit;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...