Wordpress не может получить get_current_user_id () из ajax-запроса - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь сделать запрос AJAX с WordPress.Итак, я создал простой запрос js:

$.ajax({
    url: '?',
    type: 'POST',
    data: {
        'pr_post': post,
        'pr_rating': rating
    },
    success: function (response) {
        console.log(response);
     }
});

Вот моя функция для обработки запроса.

function pr_request()
{
    if (isset($_REQUEST['pr_post']) && isset($_REQUEST['pr_rating']) && isset($_REQUEST['pr_user'])) {

         $post = $_REQUEST['pr_post'];
         $rating = ($_REQUEST['pr_rating'] > 5 ? 5 : $_REQUEST['pr_rating']);
         $user = get_current_user_id();

         if (!pr_has_user_already_voted($user, $post)) {

             global $wpdb;
             $table = $wpdb->prefix . 'mitmach_ratings';

             $wpdb->query($wpdb->prepare("insert into $table values (null, $post, $rating, '$user');"));
             wp_send_json(['message' => 'success']);

         } else {
             wp_send_json(['message' => 'duplicate'], 403);
         }
    }
 }

Как видите, я вызываю функцию get_current_user_id().Эта функция всегда возвращает true, даже если пользователь вошел в систему. Как я могу получить идентификатор пользователя в своем обработчике, не отправляя его через ajax?

1 Ответ

1 голос
/ 22 мая 2019

Для начала проверьте документы - WP Ajax .

Вам необходимо отправить action ключ

Обратите внимание, как значение ключа 'action' 'my_action', определенное в нашем JavaScript выше, соответствует второй половине действия 'wp_ajax_my_action' в нашем обработчике AJAX ниже. Это потому, что он используется для вызова функции PHP на стороне сервера через admin-ajax.php. Если действие не указано, admin-ajax.php завершит работу и вернет 0 в процессе.

$.ajax({
    url: '?',
    type: 'POST',
    data: {
        action    : 'pr_post',
        pr_rating : rating
    },
    success: function (response) {
        console.log(response);
     }
});

и звоните так:

add_action( 'wp_ajax_pr_request', 'pr_request' );
add_action( 'wp_ajax_nopriv_pr_request', 'pr_request' );

function pr_request() {
  // Code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...