Intereting Posts
Скрытие по умолчанию определенного статуса сообщения в бэкэндовом списке? Библиотеки JavaScript в WordPress Блокировка надписей навигации перед изменением заголовка? получить сообщение meta перед его обновлением (во время SAVE_POST) add_submenu_page, вызывающая ошибку 404 Настройка выпадающих списков стилей и форматов tinyMCE 4 Все постоянные ссылки идут на страницу продуктов с плагином WP E-Commerce? wp_delete_attachment Обновление метаданных с помощью save_post в многопользовательском режиме Есть ли плагин подсветки синтаксиса для просмотра HTML? Ограничить доступ пользователей к нескольким сайтам для не назначенных блогов Скрыть комментарии и сообщения, отправленные другим пользователем Справка по короткому коду: если изображение не введено по умолчанию MULTISITE SUB-DOMAIN JUST SHOWS INDEX OF -> CGI-BIN INSTEAD OF SHOWING SITE Пользовательские правила перезаписи отправляют все в index.php

Как массивные действия обрабатываются в классах таблиц пользовательских списков?

Я работаю над таблицей пользовательских данных для отображения на панели инструментов WordPress. Таблица заполняется из таблицы базы данных, которую я создал в плагине.

Я использовал прилагаемый пример таблицы пользовательского списка WordPress для большинства моих вопросов кодирования в этой области, но в примере нет ничего для обработки массовых действий. Вот ссылка для документированного примера: http://wordpress.org/extend/plugins/custom-list-table-example/

Для обработки массовых действий в примере приведено только следующее:

function process_bulk_action() { //Detect when a bulk action is being triggered... if( 'delete'===$this->current_action() ) { wp_die('Items deleted!'); } } 

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

Предполагая, что вы используете стандартную функцию column_cb (), таблица списка передает идентификаторы выбранных строк в массиве в $ _GET, помеченные как все, что вы назначили «сингулярному» в конструкторе таблицы списков.

Вот типичный column_cb ():

 function column_cb($item){ return sprintf( '<input type="checkbox" name="%1$s[]" value="%2$s" />', /*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("video") /*$2%s*/ $item->id //The value of the checkbox should be the record's id ); } 

Например, допустим, у меня есть таблица списков, в которой отображаются видео. Конструктор будет выглядеть так:

 function __construct(){ global $status, $page; //Set parent defaults parent::__construct( array( 'singular' => 'video', //singular name of the listed records 'plural' => 'videos', //plural name of the listed records 'ajax' => false //does this table support ajax? ) ); } 

Итак, если вы проверите три строки в таблице списка, выберите «Удалить» из списка групповых действий и нажмите «Применить», вы можете получить доступ к выбранным строкам с помощью $ _GET ['video'].

 function process_bulk_action() { //Detect when a bulk action is being triggered... if( 'delete'===$this->current_action() ) { foreach($_GET['video'] as $video) { //$video will be a string containing the ID of the video //ie $video = "123"; //so you can process the id however you need to. delete_this_video($video); } } }