WordPress. Метабоксы. Часть 1 из 2

15.09.2019

Теги: CMSWeb-разработкаWordPressМетаБоксМетаДанныеПанельУправления

Страница редактирования записи содержит множество стандартных метабоксов, которые доступны сразу после установки WordPress. Включить и выключить стандартные метабоксы можно наверху страницы редактирования записи, в панели Screen Options (Настройки экрана).

Перед тем, как создавать свои метабоксы, посмотрим, как можно удалить лишние.

Функция remove_meta_box()

Удаляет метабоксы на странице редактирования/создания поста, постоянной страницы или произвольного типа записи. Вызывать функцию нужно после того, как метабоксы были добавлены, например на хуке admin_menu.

remove_meta_box($id, $screen, $context);
  • $id (строка) — идентификатор метабокса; идентификаторы всех стандартных метабоксов будут перчислены ниже
  • $screen (строка) — тип записи, на странице редактирования которой нужно удалить метабокс, например post, page
  • $context (строка) — расположение метабокса, может принимать значение normal, advanced или side
/*
 * удаляем со страницы редактирования постов метабоксы
 * выбора рубрики и добавления цитаты
 */
add_action('admin_menu' , function () {
    remove_meta_box('categorydiv' , 'post' , 'side'); // рубрики
    remove_meta_box('postexcerpt' , 'post' , 'normal'); // цитата
});

Стандартные метабоксы WordPress:

  • authordiv — блок установки автора
  • categorydiv — блок рубрик
  • tagsdiv-post_tag — блок меток
  • commentstatusdiv — блок статуса комментирования
  • commentsdiv — блок комментариев
  • formatdiv — форматы записей
  • pageparentdiv — атрибуты постоянных страниц
  • postcustom — блок произвольных полей
  • postexcerpt — блок цитаты
  • postimagediv — блок картинки к посту
  • revisionsdiv — блок ревизий
  • slugdiv — блок установки slug
  • trackbacksdiv — блок уведомлений

Способы добавления метабоксов

  1. Функция register_post_type() позволяет сразу задать, какие метабоксы будет на странице редактирования для данного типа записи.
  2. Функция register_taxonomy_for_object_type() приписывает таксономию к типу записи, а значит, добавляются и метабоксы.
  3. Функция add_post_type_support() позволяет для указанного типа записи добавить указанные метабоксы из числа стандартных.
add_action('init', function () {
    $args = [
        'show_ui' => true,
        /*
         * присвоив таксономию для этого типа записи, мы автоматически
         * подключаем метабокс этой таксономии
         */
        'taxonomies' => ['category'],
        /*
         * матабоксы, которые должны быть на странице редактирования
         */
        'supports' => ['title', 'editor']
    ];
    register_post_type('book', $args);
});
Обратите внимание, что названия стандартных метабоксов для register_post_type() и remove_meta_box() отличаются.
add_action('init', function () {
    register_taxonomy_for_object_type('post_tag', 'book');
});
add_action('init', function () {
    add_post_type_support('book', 'excerpt'); // цитата
    add_post_type_support('product', ['excerpt', 'thumbnail']); // цитата и миниатюра
});

Функция add_meta_box()

Добавляет дополнительные метабоксы на страницу редактирования/создания поста, страницы или произвольного типа записи в панели управления. Функцию нужно вызывать на хуке add_meta_boxes.

add_meta_box($id, $title, $callback, $post_type, $context, $priority, $args);
  • $id (строка, обязательный) — атрибут id html-тега, контейнера блока.
  • $title (строка, обязательный) — заголовок метабокса.
  • $callback (строка, обязательный) — функция, которая выводит на экран содержимое блока.
  • $post_type (строка, обязательный) — тип записей, для которых будет показан метабокс.
  • $context (строка) — в какой части страницы вставить метабокс (normal, side, advanced), по умолчанию — advanced.
  • $priority (строка) — чем выше приоритет, тем выше будет метабокс (high, core, default или low), по умолчанию — default.
  • $args (массив) — аргументы для callback-функции.

Поиск: CMS • Web-разработка • WordPress • Панель управления • Метабокс • add_meta_box • remove_meta_box • Мета данные

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.