Пользовательские поля ввода в администрировании — настраиваемые мета-боксы

Несколько дней назад у нас была очередная встреча энтузиастов-разработчиков WordPress в Кошице . Мы встретились в кафе Halmi , на этот раз также по теме «Пользовательские метабоксы».

Мы рассмотрели три способа создания собственных полей ввода в администрировании WP и в ходе обсуждения добавили несколько собственных наработок, типов и генераторов. Мы начали с использования классических функций WordPress и описания в документации, а продолжили демонстрацией на основе плагинов Advanced Custom Fields и CMB2. Несколько исходников в конце статьи 😉

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

Согласно документации WordPress

По своей сути WordPress имеет отличные функции, которые позволяют нам настраивать его по своему вкусу. Одним из них является add_meta_box() , который мы используем для создания собственного поля ввода.

add_meta_box()

По введенным параметрам мы можем указать, в какой части редактирования поста должно располагаться поле ввода, а также для какого типа поста оно будет использоваться (статья, страница, профиль…). Однако функция создаст для нас только поле. Вам по-прежнему нужно сохранять его значение каждый раз, когда вы сохраняете сообщение, и загружать его, когда вы пытаетесь его отредактировать. Нас вдохновило комплексное решение, которое мы нашли в комментариях под документацией.

Значение этого поля ввода хранится в базе данных в таблице postmeta (или usermeta и т.п., в зависимости от типа поста) в строке вместе с идентификатором поста и метаключом (используется для различения нескольких типов значений за один пост).

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

get_post_meta()

В частности, например, следующим образом:

<?php echo get_post_meta( get_the_ID(), '_my_meta_value_key', true ); ?>

Пример результата на странице:

 

Использование плагина Advanced Custom Fields

Преимущество этого плагина в том, что в его интерфейсе можно буквально щелкать поля ввода.

Advanced Custom Fields

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

Тем не менее, это немного преувеличивает в базе данных. Определив сначала в нем поля ввода, он сохраняет их как посты (в таблице posts ), а затем сохраняет значения (например, позицию поля ввода в редактировании) в postsmeta . При сохранении правок страницы это сэкономило нам еще две строки в базе данных для одного поля ввода. Когда ревизия была автоматически сохранена, осталось еще две.

Затем мы используем не классическую функцию WP (get_post_meta) для отображения значения, а функцию плагина, например:

<?php the_field('acf1'); ?>

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

Использование плагина CMB2

Этот плагин больше не имеет настройки «щелчка», к которым мы привыкли.

CMB2

Он содержит предварительно созданные классы и объекты, которые можно использовать для создания настраиваемых полей ввода, которые значительно упрощают написание. Мы находим для него обширную документацию , и, как и ACF, он упрощает создание полей для различных типов значений (дата, время, цвет и т. д.).

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

Он хранит значения в базе данных с помощью одной строки и использует для их обработки классическую функцию WP (пример):

<?php echo get_post_meta( get_the_ID(), '_yourprefix_text', true ); ?>

Генераторы

 

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

Пример кода, используемый для встречи

Пакеты включают:

  • плагин, в котором есть примеры классических функций WP и использования CMB2 (для корректной работы нужен активированный плагин CMB2)
    • просто активируйте плагин и новые поля ввода появятся на странице редактирования
  • «тестовая» тема, производная от темы Twentyfifteen (для правильной работы необходимо установить тему Twentyfifteen )
    • содержит шаблоны страниц с кодами для отображения сохраненных значений

тест-template.zip

функции-extensions.zip

 

 

Was this article helpful for you? Support me by sharing, please. 👍
WordPress Návod v PDF

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь