✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Учебник: Как добавить пользовательское массовое действие в админке WordPress

36

Над большинством таблиц элементов в панели администратора WordPress (например, сообщения, страницы, комментарии, плагины и пользователи) вы найдете функциональность WordPress для массовых действий. Массовые действия позволяют отметить несколько элементов, выбрать действие и выполнить это действие для всех элементов одновременно. В этом посте мы рассмотрим, как добавить наши собственные массовые действия в панель администрирования WordPress.

Добавление пользовательского массового действия стало намного проще в последних версиях WordPress (начиная с 4.7). В раскрывающемся списке есть фильтр для опций; еще один фильтр для того, что он должен делать, когда выбран ваш вариант, и еще один хук для дополнительного отображения уведомления администратора. Давайте пройдемся по каждому из них.

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

Давайте начнем с добавления нашего пользовательского массового выбора в раскрывающийся список массовых действий. Для этого мы используем фильтр bulk_actions_<screen>, где вы заменяете любой экран администратора, на который вы хотите добавить свою опцию. Вот полный обзор возможных вариантов экрана:

  • bulk_actions-edit-post: Экран редактирования типа поста
  • bulk_actions-edit-page: Экран редактирования типа сообщения «страница»
  • bulk_actions-edit-<post-type-name>: Пользовательский экран редактирования типа сообщения
  • bulk_actions-edit-<custom-taxonomy>: Экран редактирования пользовательской таксономии
  • bulk_actions-edit-comments: Экран списка комментариев
  • bulk_actions-plugins: Экран со списком плагинов
  • bulk_actions-users: Экран списка пользователей
  • bulk_actions-upload: список медиатеки (работает только в виде списка, а не в виде сетки)

Фильтр применяется к массиву с парами ключ-значение; где ключи — это уникальный ключ для действий, а значения — это метка, которая появляется в раскрывающемся списке.

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

add_filter('bulk_actions-edit-post', function($bulk_actions) { $bulk_actions['change-to-published'] = __('Change to published', 'txtdomain'); return $bulk_actions; });

Если вы сохраняете и обновляете экран редактирования сообщений, вы должны увидеть свой вариант в раскрывающемся списке.

Учебник: Как добавить пользовательское массовое действие в админке WordPress

На данный момент наше пользовательское массовое действие выполняется абсолютно молниеносно. Это следующий шаг.

Заставить наше пользовательское массовое действие что-то делать

Чтобы что-то вызвать при выборе нашей новой добавленной опции в дропвоне, мы подключаемся к фильтру handle_bulk_actions-<screen>. Обратитесь к обзору выше для возможных значений экрана. Очевидно, что ваш хэндл-хук должен быть тем же экраном, что и экран, на котором вы добавили массовое действие на первом шаге.

У вас есть три возможных аргумента в этом фильтре. Первый — тот, который вы возвращаете — на самом деле является URL-адресом, на который WordPress должен перенаправить после завершения вашего массового действия. Второй аргумент — это имя действия, которое было выбрано в раскрывающемся списке. И третье — это массив всех идентификаторов элементов, которые были проверены для массового действия. Это элементы, к которым нам нужно применить наше действие.

Давайте посмотрим, что делает приведенный выше код шаг за шагом. Сначала нам нужно проверить, действительно ли выполненное массовое действие было нашим настраиваемым действием; change-to-published. И тогда мы можем делать со всеми идентификаторами все, что захотим.

Приведенный выше код перебирает все идентификаторы сообщений и выполняет wp_update_post()их для каждого, чтобы изменить статус сообщения на опубликованный. (Если вы хотите, чтобы это было эффективно, вы можете рассмотреть возможность обновления только тех, которые действительно еще не опубликованы).

После того, как мы закончили выполнять действия над выбранными элементами, нам нужно создать URL-адрес для перенаправления после завершения работы WordPress. Мы добавляем настраиваемый аргумент к предоставленному URL-адресу перенаправления. Это необязательно, но необходимо, если мы хотим показать уведомление администратора. Мы можем добавить все, что вы хотите. Но в приведенном выше примере мы просто добавляем новый аргумент запроса с add_query_arg()настройкой ‘ changed-to-published‘ для количества затронутых идентификаторов сообщений. Это полезная информация для уведомления.

Показать уведомление после выполнения нашего пользовательского массового действия

Если вы выполните наше пользовательское массовое действие сейчас, вы заметите, что после того, как WordPress завершит массовое действие, он перезагрузит страницу со следующим URL-адресом: «wp-admin/edit.php?changed-to-published=2». «2» — это количество сообщений, к которым мы применили действие. Это позволяет нам добавить пользовательское уведомление администратора, которое срабатывает, если установлено «изменено на опубликованное».

Чтобы показать уведомления администратора, мы можем использовать действие admin_notices. Мы проверяем глобальную переменную PHP, $_REQUEST, которая заполняется отправленными из формы значениями, если ‘ changed-to-published‘ существует. Если это так, это означает, что наше пользовательское массовое действие только что было выполнено. Затем мы отобразим некоторый текст, включая количество примененных сообщений.

Вот и все!

Учебник: Как добавить пользовательское массовое действие в админке WordPress

Другое использование пользовательского массового действия

Имейте в виду, что в handle_bulk_actions-<screen>хуке вы можете делать практически все, что хотите, с выбранными элементами. Вы можете обновить метаданные пользовательских сообщений, изменить роли пользователей, отправить электронное письмо или отправить HTTP-запрос в какое-либо стороннее приложение.

Например; если вы хотите, чтобы массовое действие обновляло пользовательскую мета-публикацию, которая сообщает, проверены ли сообщения, используя пользовательское массовое действие с ключом ‘ mark-as-verified‘:

add_filter('handle_bulk_actions-edit-post', function($redirect_url, $action, $post_ids) { if ($action == 'mark-as-verified') { foreach ($post_ids as $post_id) { update_post_meta($post_id, 'verified', '1'); } $redirect_url = add_query_arg('mark-as-verified', count($post_ids), $redirect_url); } return $redirect_url; }, 10, 3);

Объедините приведенное выше с пользовательским столбцом, который показывает значение «проверено» в списках сообщений — как мы сделали в этом посте, и это станет еще более полезным.

Учебник: Как добавить пользовательское массовое действие в админке WordPress

Источник записи: awhitepixel.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее