Недавно, при разработке одного сайта остро встала проблема того, как добавить собственные мета боксы в записи и другие типы записей в 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.






 
							
					 
							
					