WebTutorWordPressДобавить свой bulk action WordPress (Custom Bulk Action)

Добавить свой bulk action WordPress (Custom Bulk Action)

Бывает такая ситуация, когда вам необходимо добавить функцию обработки постов в админке WordPress по определенному критерию, который не предусмотрен по умолчанию. Например, нельзя применить действие к постам, выделенным галками, по параметру indexed Yoast SEO. То есть по параметру открытости для индексации. Придется открывать каждый пост и вручную настраивать видимость для индексации. Чтобы добавить подобный функционал, вам нужно добавить свой bulk action WordPress (Custom Bulk Action). Этим мы сейчас и займемся.

Добавляем свой bulk action WordPress (Custom Bulk Action)

Чтобы нам добавить собственные bulk action — нам потребуется немного стороннего функционала, который нам предоставляет хороший плагин под названием Custom Bulk Actions.

Плагин добавит возможность создания кастомынх bulk action, а мы используя его функции сейчас добавим возможность группового задания постам опции indexed.

Скачаем и установим плагин:

Custom bulk action wordpress

Массовая установка выделенным постам index или noindex (Custom Bulk Action)

Далее в файл functions.php добавим следующий код:

// Создадим объект, который предоставляет плагин для bulk action
// Указываем тут post_type, для которого регистрируем bulk action, в нашем
// случае - это directory. Можно указать несколько типов контента
$bulk_actions = new Seravo_Custom_Bulk_Action( array('post_type' => 'directory' ) );

// Регистрируем новый bulk action, чтобы установить посты не индексируемыми
$bulk_actions->register_bulk_action(array(
    // Название пункта в выпадающем списке на странице постов в админке
    'menu_text'=>'Yoast set noindex',
    'admin_notice'=>'Directories marked as noindexed',
    'callback' => function($post_ids) {
        foreach ($post_ids as $post_id) {
            // Обновляем опцию indexed в базе, в таблице post_meta, где Yoast определяет
            // какой пост будет индексироваться, а какой нет, 1 - пост не будет индексироваться
            update_post_meta($post_id,"_yoast_wpseo_meta-robots-noindex", "1");
        }
        return true;
    }));

// Регистрируем новый bulk action, чтобы установить посты индексируемыми
$bulk_actions->register_bulk_action(array(
    // Название пункта в выпадающем списке на странице постов в админке
    'menu_text'=>'Yoast set index',
    'admin_notice'=>'Directories marked as indexed',
    'callback' => function($post_ids) {
        foreach ($post_ids as $post_id) {
            // Обновляем опцию indexed в базе, в таблице post_meta, где Yoast определяет
            // какой пост будет индексироваться, а какой нет, "" - пост будет индексироваться
            update_post_meta($post_id,"_yoast_wpseo_meta-robots-noindex", "");
        }
        return true;
    }));

// Инициализация приложения
$bulk_actions->init();

Результатом данного кода в админке будут добавлены 2 новых bulk action WordPress:

  1. Добавит выделенным галками постам опцию noindex
  2. Уберет выделенным галками постам опцию noindex

Вот что мы получаем в админке, когда отработает код:

Вставили wordpress custom bulk action

Если выбрать Yoast set noindex и нажать «Применить» — то внутри поста мы увидим, что он закрыт для индексации:

Пост закрыт для индексации

Если заново выделить пост галкой и выбрать Yoast set index — применив изменения, зайдем в пост и он будет открыт для индексации:

Пост открыт для индексации

Таким вот простым образом мы добавили свой bulk action (Custom Bulk Action) в WordPress и сделали функцию массовой установки выделенным постам index или noindex.

Просмотров: 78

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Технологии WEB

CMS

Расширения

Сервисы