Несколько дней назад у нас была очередная встреча энтузиастов-разработчиков WordPress в Кошице . Мы встретились в кафе Halmi , на этот раз также по теме «Пользовательские метабоксы».
Мы рассмотрели три способа создания собственных полей ввода в администрировании WP и в ходе обсуждения добавили несколько собственных наработок, типов и генераторов. Мы начали с использования классических функций WordPress и описания в документации, а продолжили демонстрацией на основе плагинов Advanced Custom Fields и CMB2. Несколько исходников в конце статьи 😉
Эти поля ввода можно использовать для специальных значений, которые мы хотим обработать и отобразить на странице, в статье, профиле, товаре и т.д.
Obsah
Согласно документации WordPress
По своей сути WordPress имеет отличные функции, которые позволяют нам настраивать его по своему вкусу. Одним из них является add_meta_box() , который мы используем для создания собственного поля ввода.
По введенным параметрам мы можем указать, в какой части редактирования поста должно располагаться поле ввода, а также для какого типа поста оно будет использоваться (статья, страница, профиль…). Однако функция создаст для нас только поле. Вам по-прежнему нужно сохранять его значение каждый раз, когда вы сохраняете сообщение, и загружать его, когда вы пытаетесь его отредактировать. Нас вдохновило комплексное решение, которое мы нашли в комментариях под документацией.
Значение этого поля ввода хранится в базе данных в таблице postmeta (или usermeta и т.п., в зависимости от типа поста) в строке вместе с идентификатором поста и метаключом (используется для различения нескольких типов значений за один пост).
Для дальнейшей обработки или непосредственного отображения значения на странице мы извлекаем это значение из базы данных с помощью функции get_post_meta() .
В частности, например, следующим образом:
<?php echo get_post_meta( get_the_ID(), '_my_meta_value_key', true ); ?>
Пример результата на странице:
Использование плагина Advanced Custom Fields
Преимущество этого плагина в том, что в его интерфейсе можно буквально щелкать поля ввода.
Еще одним преимуществом является обширная документация , и без необходимости длительного программирования мы можем создавать поля ввода для галереи, карты, даты и времени и т. д.
Тем не менее, это немного преувеличивает в базе данных. Определив сначала в нем поля ввода, он сохраняет их как посты (в таблице posts ), а затем сохраняет значения (например, позицию поля ввода в редактировании) в postsmeta . При сохранении правок страницы это сэкономило нам еще две строки в базе данных для одного поля ввода. Когда ревизия была автоматически сохранена, осталось еще две.
Затем мы используем не классическую функцию WP (get_post_meta) для отображения значения, а функцию плагина, например:
<?php the_field('acf1'); ?>
Согласно документации мы также можем использовать шорткод и отображать значения в тексте статьи.
Использование плагина CMB2
Этот плагин больше не имеет настройки «щелчка», к которым мы привыкли.
Он содержит предварительно созданные классы и объекты, которые можно использовать для создания настраиваемых полей ввода, которые значительно упрощают написание. Мы находим для него обширную документацию , и, как и ACF, он упрощает создание полей для различных типов значений (дата, время, цвет и т. д.).
Хотелось бы обратить внимание на возможность добавления еще одного текстового редактора в сочетании с повторителем (группой), чтобы мы могли различать части текста на странице, позже менять их порядок и тому подобное. Также доступны другие свободно доступные расширения для этого плагина.
Он хранит значения в базе данных с помощью одной строки и использует для их обработки классическую функцию WP (пример):
<?php echo get_post_meta( get_the_ID(), '_yourprefix_text', true ); ?>
Генераторы
Вот некоторые из генераторов, упомянутых на встрече. Они генерируют код, работающий с базовыми функциями WP, без дополнительных плагинов.
- WordPress Meta Box Generator v2 Beta
- Поспешный генератор (в июле 2017 г.)
- GenerateWP (доступен в расширенной версии)
Пример кода, используемый для встречи
Пакеты включают:
- плагин, в котором есть примеры классических функций WP и использования CMB2 (для корректной работы нужен активированный плагин CMB2)
- просто активируйте плагин и новые поля ввода появятся на странице редактирования
- «тестовая» тема, производная от темы Twentyfifteen (для правильной работы необходимо установить тему Twentyfifteen )
- содержит шаблоны страниц с кодами для отображения сохраненных значений
Was this article helpful for you? Support me by sharing, please. 👍