§ WordPress — Плагин CMB2 или как быстро создать огромную кучу произвольных полей

Давненько я ничего не писал, делюсь сокровенным своим всем. А именно, прекрасным плагином для создания произвольных полей CMB2.

CMB2

Скачать плагин CMB2

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

  • Поля для ввода — текста, цены, времени, даты;
  • Всевозможные селекты, чекбоксы и радио кнопки;
  • Файлы и изображения.
  • И др.

Установка

Достаточно скачать, положить в папку plugins и активировать плагин. Сам плагин, вплоть до версии 2.2.5.3 своего интерфейса не имеет. Да он и не нужен.

Инициализируем произвольные поля, следующий код нужно вставить в файл functions.php вашей темы.

1
2
3
4
5
6
7
8
9
10
11
12
function cmb2_sample_metaboxes() {
	$prefix = 'my_metaboxes_'; // Уникальный префикс произвольных полей 
	$cmb = new_cmb2_box( array(
		'id'            => 'my_metabox',
		'title'         => __( 'Мои произвольные поля' ),
		'object_types'  => array( 'post', ), // По умолчанию, стоит post, если нужно указать другой тип записи, меняйте на свой.
		'context'       => 'normal',
		'priority'      => 'high',
		'show_names'    => true,
	) );
        // Сюда будем вставлять свои произвольные поля.
}

Важный момент: все примеры можно легко найти в файле example-functions.php, в папке с плагином.

Пример: создадим новое произвольное поле — текст.

Ищем файл example-functions.php, в папке с плагином, открываем и копируем оттуда код (строка 142):

1
2
3
4
5
6
7
8
9
10
11
12
$cmb_demo->add_field( array(
        'name' => esc_html__( 'Test Text Small', 'cmb2' ),
        'desc' => esc_html__( 'field description (optional)', 'cmb2' ),
        'id'   => $prefix . 'textsmall',
        'type' => 'text_small',
        // 'repeatable' => true,
        // 'column' => array(
        // 	'name'     => esc_html__( 'Column Title', 'cmb2' ), // Set the admin column title
        // 	'position' => 2, // Set as the second column.
        // );
        // 'display_cb' => 'yourprefix_display_text_small_column', // Output the display of the column values through a callback.
) );

Вставляем его в functions.php вашей темы.

Теперь, код должен быть таким:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function cmb2_sample_metaboxes() {
	$prefix = 'my_metaboxes_'; // Уникальный префикс произвольных полей
	$cmb = new_cmb2_box( array(
		'id'            => 'my_metabox',
		'title'         => __( 'Мои произвольные поля' ),
		'object_types'  => array( 'post', ), // По умолчанию, стоит post, если нужно указать другой тип записи, меняйте на свой.
		'context'       => 'normal',
		'priority'      => 'high',
		'show_names'    => true,
	) );
        $cmb_demo->add_field( array( //Обязательно изменить переменную на $cmb
		'name' => esc_html__( 'Test Text Small', 'cmb2' ), // Название 
		'desc' => esc_html__( 'field description (optional)', 'cmb2' ), // Подсказка
		'id'   => $prefix . 'textsmall', // Имя произвольного поля
		'type' => 'text_small',
		// 'repeatable' => true,
		// 'column' => array(
		// 	'name'     => esc_html__( 'Column Title', 'cmb2' ), // Set the admin column title
		// 	'position' => 2, // Set as the second column.
		// );
		// 'display_cb' => 'yourprefix_display_text_small_column', // Output the display of the column values through a callback.
	) );
}

Что нужно поправить:

  • Переменную $cmb_demo на $cmb.
  • ‘name’ — Название произвольного поля.
  • ‘desc’ — Подсказка для произвольного поля.
  • ‘id’ — имя произвольного поля в базе.

Результат:

Получим свое произвольное поле.

Получить произвольное поле можно стандартными средствами вордпресса:

1
<?php echo get_post_meta($post->ID, 'my_metaboxes_textsmall', true); ?>

Не запутайтесь: имя произвольного поля формируется из переменной $prefix и id.

26 сентября