Intereting Posts
Пользовательские переменные поиска в wp-запросе? 2 сайта wordpress в той же базе данных save_post + insert_post = бесконечный цикл Загрузка изображения в Frontend Страница сообщений, сделанных для просмотра на главной странице Изменить выход комментариев_popup_link пользовательский запрос для обеих категорий и страниц с использованием глобального $ wpdb; wp_get_attachment_image_src всегда возвращает полноразмерное изображение Пользовательский WordPress переписать Измените образ, используемый для пользователя, который еще не загрузил пользовательское изображение Просмотр собственных сообщений при входе в систему Пользовательская ошибка загрузки сообщения типа сообщения с пользовательской ролью пользователя Как удалить «publish exchangeox» из каждого типа сообщения Моя установка WordPress не обновляет фид при публикации новой публикации Руководство с петлей для CMS

Запрос AJAX на интерфейсе всегда возвращает 0, если пользователь не является администратором

Для плагина, который я написал, запрос AJAX на интерфейсе работает правильно, если я администратор , но то же самое не работает, когда я пытаюсь использовать его как обычный пользователь , он всегда возвращает 0.

Это основной файл php плагина, где я делаю все вложения и локализации:

require_once ( plugin_dir_path(__FILE__) . 'like-user-request.php' ); function lr_enqueue_ui_scripts() { wp_enqueue_script( 'core-likeranker-js', plugins_url( 'js/like.js', __FILE__ ), array( 'jquery', 'jquery-ui-datepicker' ), false, true ); wp_enqueue_style( 'jquery-style', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/smoothness/jquery-ui.css' ); wp_localize_script( 'core-likeranker-js', 'my_ajax_object', array( 'ajax_url' => admin_url('admin-ajax.php'), 'security' => wp_create_nonce('user-like') ) ); } add_action( 'wp_enqueue_scripts', 'lr_enqueue_ui_scripts'); 

Это javascript-файл

 jQuery(document).ready(function($){ var state = $('#post-like-count').data('user-state'); $('.like-button').on('click', function(){ var count = $('#post-like-count').data('id'); var postId = $('#post-like-count').data('post-id'); state == 1 ? count++ : count--; $.ajax({ url: my_ajax_object.ajax_url, type: 'POST', dataType: 'json', data: { action: 'save_like', likeCount: count, id: postId, userState: state, security: my_ajax_object.security }, success: function(response) { if(response.success === true){ $('#post-like-count').html(count + ' Likes'); $('#post-like-count').data('id', count); if(state == 1){ state = 2; $('.like-button').html('Dislike'); } else { state = 1; $('.like-button').html('Like !'); } $('#post-like-count').data('user-state', state); } }, error:function(error) { $('.like-box').after('Error'); } }); }) }); 

Php-файл, который обрабатывает запрос AJAX

 <?php function lr_save_like_request() { if ( ! check_ajax_referer( 'user-like', 'security' ) ) { wp_send_json_error( 'Invalid Nonce !' ); } $count = $_POST['likeCount']; $postId = $_POST['id']; $ip; if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) { //check ip from share internet $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { //to check ip is pass from proxy $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } $voters_ip = get_post_meta( $postId, '_voters_ip', false ); $flag = empty( $voters_ip ) ? 1 : 0; if( $_POST['userState'] == 1 ) { if( $flag == 1 ) { $voters_ip_buffer = $voters_ip; $voters_ip_buffer[] = $ip; } else { $voters_ip_buffer = $voters_ip[0]; $voters_ip_buffer[] = $ip; } } else { $voters_ip_buffer = $voters_ip[0]; for ( $i=0; $i < count($voters_ip_buffer); $i++ ) { if( $ip == $voters_ip_buffer[$i] ) { unset( $voters_ip_buffer ); } } } if( ! update_post_meta( $postId, '_Like', $count ) ) { add_post_meta ( $postId, '_Like', $count, true ); } if( ! update_post_meta( $postId, '_voters_ip', $voters_ip_buffer ) ) { add_post_meta ( $postId, '_voters_ip', $voters_ip_buffer, true ); } wp_send_json_success( array( 'state' => $_POST['userState'] )); wp_die(); } add_action( 'wp_ajax_save_like', 'lr_save_like_request' );