Вставка мета боксов в типы постов в WordPress

Вставка мета боксов в типы постов в WordPress

От автора: если вы хоть раз создавали для себя или клиентов сайт на WordPress или работали на компанию, чей сайт под управлением WordPress, вы должны знать, что такое мета боксы. В прошлых статьях мы уже рассказывали о вставке пользовательских мета боксов в WP. В этой статье мы сделаем еще два шага и объясним их связь, а также интеграцию с типами постов, в том числе как использовать данные из мета боксов на фронте WP.

Вставка мета боксов на экран с типами постов

Про все полезные (если не все) PHP функции, их параметры и action’ы для создания мета боксов рассказал Narayan Prusty.

Чтобы вставить мета бокс на любой экран редактирования типов постов, необходимо использовать add_meta_box(), а после подцепить функцию к экшену add_meta_boxes.

Код ниже вставляет мета бокс на экран редактирования post. Обратите внимание на global_notice_meta_box_callback – это функция для отображения полей формы в мета боксе. Разберем ее немного позже.

Чтобы вставить мета бокс на несколько экранов с типами постов (пользовательские типы постов post, page и book), создайте массив типов постов, пройдитесь по нему в цикле и с помощью add_meta_box() вставьте его на экраны.

Чтобы вставить мета бокс на все существующие и созданные в будущем экраны с типами постов, создайте массив типов постов с помощью get_post_types(), после чего замените значение $screen сверху на массив.

Вставить мета бокс на все существующие и новые экраны типов постов можно и без третьего аргумента ($screen):

Мета бокс можно ограничить типом постов (book в нашем примере). Для этого необходимо вставить имя типа поста в экшен add_meta_boxes:

Среди аргументов массива, которые использует функция register_post_type() для настройки пользовательских типов постов, есть register_meta_box_cb, чье значение является колбэк функцией. Эта функция вызывается при установке мета боксов.

Например, мы создали пользовательский тип постов book с помощью кода ниже:

Если добавить функцию add_meta_box(), с помощью которой создается мета бокс внутри PHP функции global_notice_meta_box (значение register_meta_box_cb сверху), это добавит мета бокс на экран редактирования с типом постов book.

И снова наш пример с функцией global_notice_meta_box.

Мы выучили разные способы регистрации и вставки мета боксов в WP. Нам еще нужно создать функцию global_notice_meta_box_callback, в которой будет храниться поле формы для нашего мета бокса.

Ниже представлен код функции global_notice_meta_box_callback с текстовой областью в мета боксе.

Вставка мета боксов в типы постов в WordPress

Экшен save_post обрабатывает сохранение данных, введенных в текстовую область, при сохранении черновика или публикации.

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

Объяснение кода

Сперва мы создали функцию global_notice_before_post, которую прицепили к фильтру the_content с параметром $content, в котором хранится контент поста.

В функции подключается глобальная переменная $post, в которой хранится объект WP_Post текущего просматриваемого поста.

Глобальное уведомление, сохраненное для данного поста, вытягивается с помощью get_post_meta и сохраняется в переменную $global_notice.

Уведомление оборачивается в div и записывается в переменную $notice.

И в конце, $notice, где хранится глобальное уведомление, с помощью конкатенации цепляется к $content, где хранится контент поста.

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

Вставка мета боксов в типы постов в WordPress

Заключение

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

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

И наконец, мы поняли, как на практике можно применить данные, введенные в мета бокс.

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

Автор: Collins Agbonghama

Источник: //www.sitepoint.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: