Недавно, при разработке одного сайта остро встала проблема того, как добавить собственные мета боксы в записи и другие типы записей в WordPress. Какое-то время назад мы писали о том, как это сделать плагином More Fields, однако разработка этого плагина была приостановлена. В виду этого в сегодняшней статье мы покажем вам как добавить собственные метабоксы в записи и другие типы записей в WordPress.
Примечение: Эта статья ориентирована на дизайнеров и разработчиков.
В виду того, что цель этой статье показать вам как создавать мета боксы с возможным их повторным использованием в WordPress, мы будем использовать Custom Metaboxes and Fields for WordPress class (CMB) от авторов Andrew Norcross, Jared Atchison, и Bill Erickson. Эти три человека достаточно известны в сообществе WordPress. Они объединили свои усилия для создания мощного решения для того, чтобы облегчить свою работу и работу других разработчиков.
Прежде всего вам необходимо скачать CMB class. Создайте новую папку и назовите её “custom-meta-boxes-wp”. Извлеките туда содержимое архива CMB zip.
Теперь давайте создадим пустой файл PHP и назовем его cmb-wp.php. Это файл, который мы будем использовать для нашего плагина и создания всех мета боксов, которые нам понадобятся. Ниже пример содержания файла, которое нужно туда поместить:
<?php /* Plugin Name: Sitename Custom Meta Boxes Plugin URI: http://web-devise.com/ Description: Созданием Meta Box для сайта. Version: 0.1 Author: Syed Balkhi Author URI: hhttp://web-devise.com/ License: GPL v2 or higher License URI: License URI: http://www.gnu.org/licenses/gpl-2.0.html */ //Инициализируем класс метабоксов function wpb_initialize_cmb_meta_boxes() { if ( ! class_exists( 'cmb_Meta_Box' ) ) require_once(plugin_dir_path( __FILE__ ) . 'init.php'); } add_action( 'init', 'wpb_initialize_cmb_meta_boxes', 9999 ); //добавляем мета боксы function wpb_sample_metaboxes( $meta_boxes ) { $prefix = '_wpb_'; // префикс для всех полей $meta_boxes[] = array( 'id' => 'test_metabox', 'title' => 'Test Metabox', 'pages' => array('page'), // тип записей 'context' => 'normal', 'priority' => 'high', 'show_names' => true, // показываем имя поля слева 'fields' => array( array( 'name' => 'Test Text', 'desc' => 'field description (optional)', 'id' => $prefix . 'test_text', 'type' => 'text' ), ), ); return $meta_boxes; } add_filter( 'cmb_meta_boxes', 'wpb_sample_metaboxes' );
Пример выше очень простой. Он всего лишь добавляет текстовый мета бокс с текстовым полем на страницах. Как вы видите, вы можете настраивать типы записей. CMB class поддерживаем следующие типы полей:
- text
- text small
- text medium
- text money
- date picker
- date picker (unix timestamp)
- date time picker combo (unix timestamp)
- time picker
- color picker
- textarea
- textarea small
- textarea code
- select
- radio
- radio inline
- taxonomy radio
- taxonomy select
- checkbox
- multicheck
- WYSIWYG/TinyMCE
- Image/file upload
Вот страница в wiki, которая рссскажет вам как добавить все типы полей. Также есть файл примера example-functions.php, который можно использовать в качестве шаблона.
После того, как вы закончите, загрузите папку в директорию с плагинами. Теперь вы с легкостью можете вывести эти поля в цикле, используя функцию get_post_meta().
С тех пор, как мы открыли для себя этот CMB class, мы уже не использовали ничего другого. Мы брали его для всех собственных и клиентских проектов. Если вы дизайнер или разработчик, то вам очень пригодится он для организации рабочего процесса. Надеемся, что статья помогла вам добавить собственные мета боксы в записи и другие типы записей в WordPress.