Добавляем собственные мета боксы в записи WordPress

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

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top