Intereting Posts
Custom Taxonomy Select Menu: настройка значения по умолчанию? Добавить оценочное значение для сообщения в соответствии с количеством слов В панели управления администратора я могу выбрать, какие разделы будут отображаться? Проблема с полем пользовательских проверок условного woocommerce Нужна помощь в поиске информации для создания этого типа страницы Как отобразить значение настраиваемых полей на странице Включение виджета по умолчанию в пользовательской теме Добавить страницу без заголовка и меню? Как удалить дату в виджетах недавнего сообщения? Как я могу автоматически дублировать страницы сайта на сетевом сайте? Как использовать виджет в темой WordPress без виджета? Фильтровать поисковые сообщения по почте meta? Как исправить ошибку "file_get_contents был найден в файле functions.php"? Как добавить функцию к настраиваемым полям, когда страница / сообщение имеет пароль? Крюк при добавлении или редактировании определенного пользовательского типа сообщений?

Создание ссылки WP_Delete_user

Я пытаюсь создать управление пользователями через интерфейс, но я не уверен, как реализовать wp_delete_user Удалить ссылку

add_action( 'wp_head', 'my_action_javascript' ); function my_action_javascript() { ?> <script type="text/javascript" > jQuery(document).ready(function () { jQuery(".delete_user").click(function () { var data = { 'action': 'delete_user_action', 'user_id': jQuery(this).attr('delete-user-id'), 'security': ajax_object.ajax_nonce }; jQuery.post(ajax_object.ajax_url, data, function (response) { }); }); }); </script> <?php } add_action( 'wp_ajax_delete_user_action', 'delete_user_action_callback' ); add_action( 'wp_ajax_nopriv_delete_user_action', 'delete_user_action_callback' ); function delete_user_action_callback(){ check_ajax_referer( 'security-special-string', 'security' ); wp_delete_user( $_POST['user_id'] ); die(); } add_shortcode('listuser', 'listsubscriber'); function listsubscriber() { $blogusers = get_users( array( 'fields' => array('display_name','ID' )) ); echo '<ul>'; foreach ( $blogusers as $user ) { echo '<li>' . esc_html( $user->display_name ) . '|' . esc_html( $user->ID ) . '<a class="delete_user" delete-user-id="' . $user->ID . '" href="#">Delete User</a></li>'; } echo '</ul>'; } } 

WordPress не предоставляет ссылку на удаление пользователя, поскольку она предусматривает удаление сообщений. Поэтому мы должны сделать это с помощью Ajax. Следующим будет подход к решению этой проблемы:

  1. Добавить идентификатор пользователя в качестве атрибута в тег
  2. Когда нажата кнопка привязки, введите идентификатор пользователя и пожарный запрос ajax, который удалит пользователя.

Пожалуйста, удалите $deleteurl = wp_delete_user ( $user->ID); из кода. Потому что он удалит пользователя перед листингом и, следовательно, вызовет ошибку. Мы добавим его в ajax-вызов.

Давайте начнем с добавления атрибута к тегу привязки. Мы добавим атрибут id пользователя, а также класс в тег привязки. Таким образом, ваша ссылка будет выглядеть так:

 echo '<li>' . esc_html( $user->display_name ) . '|' . esc_html( $user->ID ) . '<a class="delete_user" delete-user-id="' . $user->ID . '" href="#">Delete User</a></li>'; 

Добавьте ниже jQuery-код в файл js. Вам нужно будет передать admin_url( 'admin-ajax.php' ) в качестве URL admin_url( 'admin-ajax.php' ) ajax для вашего js-файла. wp_localize_script может использоваться для передачи значений php в javascript. Вы можете узнать больше об Ajax в WordPress здесь .

Я предполагаю, что Ajax url в js-файле будет доступен с помощью ajax_object.ajax_url . Пожалуйста, измените этот параметр на свой. Также пропустите поле nonce, используя wp_localiize_script. Таким образом, в вашем массиве, который будет передан с использованием wp_localize_script, будет добавлен еще один ключ: 'ajax_nonce' => wp_create_nonce( "security-special-string" ) . Это необходимо для целей безопасности

Вам не нужен документ document.ready, если вы уже вызвали его, и в этом случае начните использовать код из jQuery(".delete_user").click(function(){ line.

 jQuery(document).ready(function(){ jQuery(".delete_user").click(function(){ var data = { 'action': 'delete_user_action', 'user_id': jQuery(this).attr('delete-user-id'), //Pass User id 'security': ajax_object.ajax_nonce }; //lets fire ajax request jQuery.post(ajax_object.ajax_url, data, function(response) { //Add your code here to show message after deleting the user. } }); }); 

Теперь давайте напишем код для обработки запроса ajax. Вы можете написать этот код в php-файле вашего плагина или в functions.php вашей темы.

 add_action( 'wp_ajax_delete_user_action', 'delete_user_action_callback' ); add_action( 'wp_ajax_nopriv_delete_user_action', 'delete_user_action_callback' ); function delete_user_action_callback(){ check_ajax_referer( 'security-special-string', 'security' ); wp_delete_user( $_POST['user_id'] ); die(); } 

В целях безопасности вы должны проверить, имеет ли пользователь разрешения на удаление пользователя, используя if( current_user_can( 'delete_users' ) ) условие.

Обновить

Благодарим вас за отправку кода. Мы должны будем внести изменения в этот код.

Попробуйте этот код:

 add_action( 'wp_head', 'my_action_javascript' ); function my_action_javascript() { ?> <script type="text/javascript" > jQuery(document).ready(function() { jQuery(".delete_user").click(function() { var current_element_var = jQuery(this); var data = { 'action': 'delete_user_action', 'user_id': current_element_var.attr('delete-user-id'), 'security': '<?php echo wp_create_nonce( "security-special-string" ) ?>' }; jQuery.post('<?php echo admin_url( 'admin-ajax.php' ) ?>', data, function(response) { if (response == 'deleted_successfully') { current_element_var.hide(); current_element_var.after('<span> User Deleted Successfully </span>'); current_element_var.remove(); } }); return false; }); }); </script> <?php } add_action( 'wp_ajax_delete_user_action', 'delete_user_action_callback' ); add_action( 'wp_ajax_nopriv_delete_user_action', 'delete_user_action_callback' ); function delete_user_action_callback() { check_ajax_referer( 'security-special-string', 'security' ); wp_delete_user( $_POST['user_id'] ); echo 'deleted_successfully'; die(); } 

Дайте мне знать, работает ли над вами код. 🙂