Intereting Posts
Прокрутите через пользовательский тип сообщения, а затем покажите детям на каждой итерации Проблема при преобразовании существующего сайта в многосайтовый с установкой подпапок Получите только последнюю дочернюю категорию продуктов Программный вход пользователя WordPress Разрешение почтовых вложений без ввода текста Область переменных в WorPdress Таймер на сайте Удалить заголовок блока содержимого темы, игнорируя сохраненные изменения / не обновляя? Могу ли я блокировать пользовательские таксономии на уровне родительского термина, но не на детском терминале? Loop не исключает указанную категорию на главной странице Крюк при редактировании пользователя Добавление атрибутов в ссылку <a> в wp_nav_menu с использованием пользовательской функции Walker Список сообщений категории, которые ссылаются на страницу с этими сообщениями странное поведение template_redirect в IE8 Как получить идентификатор или URL-адрес изображения в сообщении изображения?

Удалить строку пользовательской таблицы в WordPress с помощью AJAX

Из моей пользовательской таблицы ( $table = $wpdb->prefix . 'user_req'; ) Я показываю данные с помощью $wpdb->get_results() и цикла foreach:

мой стол

Мне удалось обновить базу данных с отдельными значениями из формы, где есть кнопка «Отправить». Но из этой таблицы я хочу удалить любую строку, нажав на кнопку (x) справа от каждой строки. Я могу использовать $_GET[] и может легко удалить строку, но в этом случае я хочу использовать AJAX.

Кнопка (x) справа от каждой строки на самом деле:

 <input type="button" class="delete" title="Exclude This One"/> 

Я не кодовый фон, поэтому я действительно борюсь с ним. Большинство решений приходит, когда я ищу, для сырого PHP-mySQL, но я пытаюсь справиться с этим способом WordPress. Я мог бы подготовить мой запрос на удаление wpdb:

 <?php $wpdb->delete( $table, array( 'post_id' => $products->post_id ) ); ?> 

Но не удалось с ним пойти в WordPress-AJAX. Поэтому любая помощь будет очень признательна.

данное время

Вы захотите установить скрытое скрытое поле или элемент, чтобы вы могли проверить запрос. Взгляните на код на примерах.

Установка идентификатора POST и Nonce

Вам нужно будет добавить идентификатор конкретного сообщения в кнопку удаления или в скрытое поле ввода, связанное с этой записью. У меня есть пример установки, поэтому вам нужно будет добавить post_id и nonce к id элемента в формате, таком как #delete_postid_nonce . Идентификатор элемента должен быть таким: #delete_12_94f3a1e666 .

Вы можете назначить его, используя: $element_id = 'delete_' . $products->post_id . '_' . wp_create_nonce('delete_' . $products->post_id ); $element_id = 'delete_' . $products->post_id . '_' . wp_create_nonce('delete_' . $products->post_id );

Добавить действия

Они должны быть размещены в functions.php или в пользовательском плагине.

Вы заметите, что есть два вызова add_action. Один из них – для привилегированных пользователей (т. Е. Они вошли в систему), а один – для не-привилегированных пользователей. Удалите тот или другой, если вам не нужны оба. Вы можете больше узнать об этом в Codex.

Функция Delete_Row ()

Это нужно поместить в functions.php или в пользовательский плагин.

Здесь вы захватываете id который мы отправили в объект данных вызова ajax. Это анализируется и помещается в массив POST так как type вызова ajax установлен в POST .

Затем вы explode() идентификатор идентификатора элемента, отправленного в вызове ajax (например, '# delete_12_94f3a1e666'), который оставит вас с $id = array('delete', 12, '94f3a1e666'); , Таким образом, post_id равен индексу [1] .

Затем вы echo возвращаете data в success часть вызова ajax. И тогда вы убиваете функцию php, вызывая «die».


Вам нужно будет изменить этот код, чтобы он работал 100%.

JS:

 jQuery(document).on('click', '.delete', function () { var id = this.id; jQuery.ajax({ type: 'POST', url: ajaxurl, data: {"action": "your_delete_action", "element_id": id}, success: function (data) { //run stuff on success here. You can use `data` var in the //return so you could post a message. } }); }); 

PHP:

 function delete_row() { $id = explode('_', sanitize_text($_POST['element_id'])); if (wp_verify_nonce($id[2], $id[0] . '_' . $id[1])) { $table = 'yourtable'; $wpdb->delete( $table, array( 'post_id' => $id[1] ) ); echo 'Deleted post'; die; } else { echo 'Nonce not verified'; die; } } add_action('wp_ajax_your_delete_action', 'delete_row'); add_action( 'wp_ajax_nopriv_your_delete_action', 'delete_row');