WordPress как на ладони
WordCamp Saint Petersburg 2018 wordpress jino

Meta Box — типы полей

Статья содержит описание всех возможных типов полей в плагине Meta Box и специальные параметры (опции) для каждого поля.

autocomplete

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

Для автозаполнения использует библиотеку jQuery UI.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив вида 'ключ' => 'значение'. В метаполе сохраняется ключ, а значение используется при поиске в авто-заполнении.
size(число)
Значение атрибута size для тега input.
По умолчанию: 30

Код для создания поля

array(
	'name'    => 'Autocomplete',
	'id'      => 'field_id',
	'type'    => 'autocomplete',
	// Список значений, которые будут искаться при авто-заполнении
	'options' => array(
		'java'       => 'Java',
		'javascript' => 'JavaScript',
		'php'        => 'PHP',
		'c'          => 'C',
		'cplusplus'  => 'C++',
		'csharp'     => 'C#',
		'objectivec' => 'Objective-C',
		'kotlin'     => 'Kotlin',
		'swift'      => 'Swift',
	),
	'size'    => 50,
)

Как хранятся данные

Несколько значений поля сохраняются в отдельные строки таблицы с одинаковым ключом. Также как это делает функция WP add_post_meta(), если ей указать последний параметр как false.

Если поле клонируемое, то данные сохраняются в одну ячейку таблицы в виде сериализованного массива. Где каждое значение массива - это массив данных каждого клонированного поля.

В БД сохраняются ключи параметра options, а не значения.

Как получить значения

Для не-повторяемого поля:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

Для повторяемого поля:

$values = rwmb_meta( $field_id );
foreach ( $values as $clone ) {
	foreach ( $clone as $value ) {
		echo $value;
	}
}

background

Позволяет создавать полноценные настройки для CSS свойства background (для фона). В частности, хорошо подойдет для опции - фон страницы. Можно установить фоновый цвет, картинку, и другие свойства стилей.

Индивидуальных параметров нет - может принимать только общие параметры.

Код для создания поля

array(
	'id'   => 'background',
	'name' => 'Background',
	'type' => 'background',
),

Как хранятся данные

В виде сериализованного массива.

Как получить значения

Чтобы получить значение, можно использовать функцию get_post_meta() или rwmb_meta():

$background = rwmb_meta( 'background' );
echo $background['color'];
echo $background['image'];

print_r( $background );

/*
array(
	'color'      => '#111222',
	'image'      => 'https://domain.com/wp-uploads/2017/12/bg.png',
	'position'   => 'top left',
	'attachment' => 'fixed',
	'size'       => 'cover',
	'repeat'     => 'no-repeat',
);
*/

Можно сразу получить готовый CSS код, используйте rwmb_the_value():

$css = rwmb_the_value( $field_id );
echo '<div style="', $css, '"></div>';

Подробнее о функциях: rwmb_meta() и rwmb_the_value().


button

Просто создает кнопку, ничего не сохраняет в базу данных. Обычно используется для создания каких-либо событий по клику на кнопку.

Параметры поля

Индивидуальных параметров нет - может принимать только общие параметры. Но есть важные параметры для этого поля, на которые нужно обратить внимание:

std(строка)
Значение поля по умолчанию.
attributes(массив)
Позволяет добавлять полям произвольные атрибуты для HTML тега, например data-* чтобы потом использовать его в в javasript. Подробнее смотрите в описании общих параметров.
По умолчанию: array()

Код для создания поля

array(
	'type'       => 'button',
	'name'       => 'Advanced Settings',
	// Текст кнопки.
	'std'        => 'Toggle',
	// HTML Атрибуты.
	'attributes' => array(
		'data-section' => 'advanced-section',
		'class'        => 'js-toggle',
	),
),

Свой JavaScript

Как говорилось выше, это поле используется для создания событий по клику, а для этого нужен JS код. Чтобы подключить JavaScript файл на страницу метабокса, используйте хук rwmb_enqueue_scripts:

add_action( 'rwmb_enqueue_scripts', 'prefix_enqueue_custom_script' );
function prefix_enqueue_custom_script() {
	wp_enqueue_script( 'script-id', get_template_directory_uri() . '/js/admin.js', array( 'jquery' ), '', true );
}

Теперь создадим файл admin.js и напишем в него нужный JS скрипт: событие при клике на нашу кнопку.

jQuery( function( $ ) {
	$( '.js-toggle' ).on( 'click', function() {
		// делаем что либо.
	} );
} );

button_group

Группы кнопок позволяют выбрать один или несколько вариантов.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив, состоящий из пар 'Значение' => 'Заголовок'. В метаполе будет храниться Значение. Заголовки кнопок могут быть, как в виде текста (к примеру, Кнопка 1), так и в виде html кода (к примеру, иконка из набора иконочных шрифтов dashicon : <i class="dashicons dashicons-editor-bold"></i>).
inline(логический)
Отображать кнопки горизонтально (true) или вертикально (false).
По умолчанию: true
multiple(логический)
Разрешить выбор нескольких вариантов.
По умолчанию: false

Код для создания поля

array(
	'id'   => 'styles-title',
	'name' => 'Заголовок записи',
	'type' => 'button_group',

	'options'  => array(
		'bold'      => '<i class="dashicons dashicons-editor-bold"></i>',
		'italic'    => '<i class="dashicons dashicons-editor-italic"></i>',
		'underline' => '<i class="dashicons dashicons-editor-underline"></i>',
	),
	'inline'   => true,
	'multiple' => true,
),

Как хранятся данные

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

Также как это делает функция WP add_post_meta(), если ей указать последний параметр как false.

Если поле клонируемое, то данные сохраняются в одну ячейку таблицы в виде сериализованного массива.

Как получить значения

Для не-повторяемого поля:

$value = rwmb_meta( $field_id );
echo $value;

Вывести на экран Заголовок (текст кнопки):

rwmb_the_value( $field_id );

Если было выбрано несколько вариантов, то html код будет подобным:

<ul>
	<li>Текст кнопки 1</li>
	<li>Текст кнопки 3</li>
</ul>

Для повторяемого поля:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

checkbox

Позволяет вывести обычный чекбокс (галочку).

Индивидуальных параметров нет - может принимать только общие параметры.

Код для создания поля

array(
	'name' => 'Checkbox',
	'id'   => 'field_id',
	'type' => 'checkbox',
	'std'  => 1, // 0 or 1
),

Как хранятся данные

Хранит отмеченную и не-отмеченную галочку как 1 и 0 в базе данных.

Как получить значения

Чтобы получить значение поля, используйте такой код:

$value = rwmb_meta( $field_id );

// моле отмечено
if ( $value ) {
	echo 'Checked';
}
// поле не отмечено
else {
	echo 'Unchecked';
}

Или так, когда нужно вывести Да/Нет (Yes/No):

rwmb_the_value( $field_id ); // echo 'Yes' or 'No'.

checkbox_list

Создает список чекбоксов - это позволяет выбирать сразу несколько значений из установленного списка.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив с элементами: 'Значение' => 'Заголовок'. В БД сохраняется Значение.
inline(true/false)
В каком виде показывать список: колонки - false или линия - true.
По умолчанию: false (колонка)
select_all_none(true/false)
Показать кнопку «Выбрать все / ничего» (Select All / None). Кнопка помогает быстро проставлять галочки.
По умолчанию: false

Заметка: параметр multiple всегда равен true для этого поля.

Код для создания поля

array(
	'name'    => 'Checkbox list',
	'id'      => 'field_id',
	'type'    => 'checkbox_list',

	// все чекбоксы блока в формате 'value' => 'Label'
	'options' => array(
		'java'       => 'Java',
		'javascript' => 'JavaScript',
		'php'        => 'PHP',
		'csharp'     => 'C#',
		'objectivec' => 'Objective-C',
		'kotlin'     => 'Kotlin',
		'swift'      => 'Swift',
	),

	'inline' => true, // показать в виде линии
	'select_all_none' => true, // кнопка Выбрать/убрать все
),

Как хранятся данные

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

Если поле клонируемое, то значения сохраняются в виде сериализованного массива в одну ячейку таблицы.

Как получить значения

Если поле не-клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

Если поле клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $clone ) {
	foreach ( $clone as $value ) {
		echo $value;
	}
}

rwmb_meta() получает значение указанных опций, т.е. ключи массива. Чтобы получить названия полей, используйте такой код:

rwmb_the_value( $field_id );

Он выведет HTML конструкцию вида:

<ul>
	<li>Java</li>
	<li>JavaScript</li>
</ul>

color

Позволяет выбирать цвет из выпадающей палитры. Использует встроенную цветовую палитру WordPress (называется Iris). В палитре можно указать альфа канал (прозрачность).

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

alpha_channel(true/false)
Добавлять или нет прозрачный канал в палитру.
По умолчанию: false
js_options(число)
Опции для скрипта палитры. Смотрите здесь.
По умолчанию: пред-установки

Код для создания поля

array(
	'name'          => 'Color picker',
	'id'            => 'field_id',
	'type'          => 'color',
	'alpha_channel' => true,
	// опции Color picker: https://automattic.github.io/Iris/.
	'js_options'    => array(
		'palettes' => array( '#125', '#459', '#78b', '#ab0', '#de3', '#f0f' )
	),
),

Как хранятся данные

Сохраняет цвет в HEX формате (#ff5489).

Если поле клонируемое, все значения сохраняются в виде сериализованного массива в одну ячейку таблицы.

Как получить значения

Получим значение цвета:

$value = rwmb_meta( $field_id );
echo $value; //> #af52f5

Если нужно вывести реальный цвет, используйте функцию rwmb_the_value()

rwmb_the_value( $field_id );

Получим:


custom_html

Позволяет выводит любой текст или что угодно еще. Можно даже использовать колбек функцию PHP чтобы выводить динамический контент.

Поле обычно используется, чтобы выводить заметки или инструкции для пользователей. Иногда с её помощью удобно выводить изменяемый контент через PHP функцию, например, контент получаемый из какого либо запроса.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

std(строка)
Контент который нужно вывести. Можно использовать HTML теги.
callback(callback)
PHP функция, которая выводит HTML контент.
По умолчанию: нет

Код для создания поля

array(
	// название и id поля обычно не используется
	'type' => 'custom_html',

	// HTML контент
	'std'  => '<div class="alert alert-warning">This is a custom HTML content</div>',

	// PHP функция
	// 'callback' => 'display_warning',
),

Стилизация

Часто бывает нужно добавить css стили для отображаемого контента, чтобы он выглядел красиво. Для этого на страницу с метабоксом нужно добавить произвольный файл стилей, делается это через хук: rwmb_enqueue_scripts:

add_action( 'rwmb_enqueue_scripts', 'prefix_enqueue_custom_style' );
	function prefix_enqueue_custom_style() {
		wp_enqueue_style( 'style-id', get_template_directory_uri() . '/css/admin.css' );
}

Теперь нужно создать файл admin.css и написать туда нужные CSS стили.


date

Позволяет удобно выбирать дату, с помощью выпадающего календаря. Использует библиотеку jQuery UI datepicker.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

size(число)
Размер input поля, атрибут size.
По умолчанию: 10
inline(true/false)

Нужно ли сразу показывать календарь для выбора даты.

  • true - календарь будет сразу показан, т.е. не нужно фокусироваться в поле чтобы он появился.
  • false - календарь будет появляться при фокусе в поле.

По умолчанию: false

timestamp(true/false)

Нужно ли сохранять дату в Unix формате.

  • true - сохранять дату в БД как метку времени unix.
  • false - сохранять как определено.

По умолчанию: false

js_options(массив)
Опции для библиотеки datepicker, смотрите здесь.
По умолчанию: пред-установки

Код для создания поля

array(
	'name'       => 'Date picker',
	'id'         => 'field_id',
	'type'       => 'date',

	// Опции Date picker: http://api.jqueryui.com/datepicker
	'js_options' => array(
		'dateFormat'      => 'yy-mm-dd',
		'showButtonPanel' => false,
	),

	'inline' => false, // сразу показать календарь?
	'timestamp' => false, // сохранять значение как timestamp
),

Как хранятся данные

Если параметр timestamp = true, то значение конвертируется в метку времени Unix и сохраняется в БД. В противном случае, сохраняется значение input поля.

Как получить значения

$value = rwmb_meta( $field_id );
echo $value;

или тоже самое можно сделать так:

rwmb_the_value( $field_id );

Когда timestamp = true значение можно легко конвертировать в любой формат:

$value = rwmb_meta( $field_id );
echo date( 'F j, Y', $value );

или еще проще:

rwmb_the_value( $field_id, array( 'format'=>'F j, Y' ) );

Второй параметр rwmb_the_value() принимает в этом случае формат, в который должна превратиться получаемая метка времени.

Сохранение в формате метки времени, также позволяет сортировать записи по этой метке (по дате):

$query = new WP_Query( array(
	'post_type' => 'post',
	'orderby'   => 'meta_value_num',
	'meta_key'  => 'field_id',
	'order'     => 'ASC',
) );

Впрочем, если дата указана в SQL формате - yy-mm-dd, то такую сортировку можно делать базовыми функциями WordPress (см. meta_query).


datetime

Позволяет удобно устанавливать дату и время. Использует библиотеки datepicker и timepicker из jQuery UI.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

size(число)
Размер input поля, атрибут size.
По умолчанию: 10
inline(true/false)

Нужно ли сразу показывать календарь для выбора даты.

  • true - календарь будет сразу показан, т.е. не нужно фокусироваться в поле чтобы он появился.
  • false - календарь будет появляться при фокусе в поле.

По умолчанию: false

timestamp(true/false)

Нужно ли сохранять дату в Unix формате.

  • true - сохранять дату в БД как метку времени unix.
  • false - сохранять как определено.

По умолчанию: false

js_options(массив)
Опции для библиотеки datepicker. Смотрите опции для date picker и time picker.
По умолчанию: пред-установки

Код для создания поля

array(
	'name'       => 'Date picker',
	'id'         => 'field_id',
	'type'       => 'date',

	// опции пикера.
	// date: http://api.jqueryui.com/datepicker
	// time: http://trentrichardson.com/examples/timepicker/
	'js_options' => array(
		'stepMinute'      => 15,
		'showTimepicker'  => true,
		'controlType'     => 'select',
		'showButtonPanel' => false,
		'oneLine'         => true,
	),

	'inline'     => false, // сразу показать календарь для выбора даты и времени
	'timestamp'  => false, // значение сохранять в виде timestamp
),

Как хранятся данные

Если параметр timestamp = true, то значение конвертируется в метку времени Unix и сохраняется в БД. В противном случае, сохраняется значение input поля.

Как получить значения

$value = rwmb_meta( $field_id );
echo $value;

или тоже самое можно сделать так:

rwmb_the_value( $field_id );

Когда timestamp = true значение можно легко конвертировать в любой формат:

$value = rwmb_meta( $field_id );
echo date( 'F j, Y H:i', $value );

или еще проще:

rwmb_the_value( $field_id, array( 'format'=>'F j, Y H:i' ) );

Второй параметр rwmb_the_value() принимает в этом случае формат, в который должна превратиться получаемая метка времени.

Сохранение в формате метки времени, также позволяет сортировать записи по этой метке (по дате):

$query = new WP_Query( array(
	'post_type' => 'post',
	'orderby'   => 'meta_value_num',
	'meta_key'  => 'field_id',
	'order'     => 'ASC',
) );

Впрочем, если дата указана в SQL формате - yy-mm-dd, то такую сортировку можно делать базовыми функциями WordPress (см. meta_query).


divider

Просто создает горизонтальную линию. Используется для разделения полей для лучшего визуального восприятия.

Не сохраняет никаких значений в базу данных и не имеет параметров.

Код для создания поля

array(
	'type' => 'divider',
),

fieldset_text

Создает группу текстовых полей. Используется когда нужно создать группу каких либо связанных полей. Например: Имя, адрес, почта.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив с элементами вида 'ключ' => 'Название поля (label)'. Ключ используется как индекс для элемента массива сохраняемого в БД.

Заметка: для этого поля параметр multiple всегда равен false.

Код для создания поля

array(
	'id'      => 'field_id',
	'name'    => 'Fieldset Text',
	'type'    => 'fieldset_text',

	// массив полей
	// заметка: ключ используется как есть при сохранении, а значение - это название поля.
	'options' => array(
		'name'    => 'Name',
		'address' => 'Address',
		'email'   => 'Email',
	),

	'clone' => true,
),

Как хранятся данные

Всегда сохраняет данные в виде сериализованного массива а одну ячейку таблицы. Каждый элемент массива будет иметь ключ который указан в параметре options, а значение будет то которое введет пользователь.

Как получить значения

Если поле не-клонируемое:

$value = rwmb_meta( $field_id );
echo $value['name'];
echo $value['address'];
echo $value['email'];

Если поле клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $clone ) {
	foreach ( $clone as $value ) {
		echo $value['name'];
		echo $value['address'];
		echo $value['email'];
	}
}

file

Создает простое поле для загрузки одного файла - <input type="file">. В отличии от других медиа полей, НЕ использует «Медиа окно WordPress» для загрузки файла - файл нужно выбрать и при обновлении записи он будет загружен в медиатеку и прикреплен к текущей записи.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Сколько максимально можно загрузить файлов. Если не указать параметр, то без ограничений.
По умолчанию: 0 (бесконечно)
force_delete(true/false)
Нужно ли удалять файл из медиа-библиотеки при удалении его из метаполя.
По умолчанию: false
mime_type(строка)

MIME типы файлов, которые нужно показывать в окне при выборе файлов для загрузки. Несколько типов можно указать через запятую.

Этот фильтр не влияет реально на загружаемые файлы, а просто помогает убрать лишние типы при выборе...

Список возможных значений:

  • text - text/plain, text/html, text/css, text/javascript
  • image - image/gif, image/png, image/jpeg, image/bmp, image/webp
  • audio - audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
  • video - video/webm, video/ogg
  • application - application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

По умолчанию: ''

Заметка: параметр multiple для этого поля всегда равен true.

Код для создания поля

array(
	'id'               => 'file',
	'name'             => 'File',
	'type'             => 'file',

	// удалять файл из медиатеки при удалении из метаполя?
	'force_delete'     => false,
	'max_file_uploads' => 2, // макс. кол-во файлов
),

Как хранятся данные

Сохраняет каждый ID вложения (файла) в отдельную строку таблицы метаполей. Клонируемое поле сохраняются в одну строку в виде сериализованного массива.

Как получить значения

Получим все файлы:

<?php
$files = rwmb_meta( 'field_id' );
foreach ( $files as $file ) {
	?>
	<a href="<?php echo $file['url']; ?>"><?php echo $file['name']; ?></a>
	<?php
}

/*
$file содержит
array(
	'ID'    => 123,
	'name'  => 'intro.txt',
	'path'  => '/var/www/wp-content/uploads/intro.txt',
	'url'   => 'https://example.com/wp-content/uploads/intro.txt',
	'title' => 'Introduction',
);

*/

Чтобы получить только 1 файл, используйте параметр limit для функции rwmb_meta():

<?php
$files = rwmb_meta( 'field_id', array( 'limit' => 1 ) );
$file = reset( $files );
?>
<a href="<?php echo $file['url']; ?>">Download File</a>

Если нужно вывести файлы на экран в виде UL списка, используйте rwmb_the_value():

rwmb_the_value( $field_id );

/* Выведет:
<ul>
	<li><a href="link/to/file/">File 1</li>
	<li><a href="link/to/file/">File 2</li>
</ul>
*/

Фильтры

Для поля есть спец. фильтры, чтобы изменить тексты в метабоксе:

Фильтр Текст
rwmb_file_upload_string Upload Files
rwmb_file_add_string + Add new file
rwmb_file_delete_string Delete
rwmb_file_edit_string Edit

Этот код изменить текст «+ Add new file»:

add_filter( 'rwmb_file_add_string', 'prefix_change_add_string' );
function prefix_change_add_string(){
	return '+ New File';
}

file_advanced

Позволяет загружать или выбирать файлы с использованием «Медиа окна WordPress» для выбора или загрузки файлов. Также есть возможность менять файлы местами.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Сколько максимально можно загрузить файлов. Если не указать параметр, то без ограничений.
По умолчанию: 0 (бесконечно)
max_status (true/false)
Нужно ли показывать сколько файлов загружено/осталось загрузить. Работает только когда указан параметр max_file_uploads.
По умолчанию: true
force_delete(true/false)
Нужно ли удалять файл из медиа-библиотеки при удалении его из метаполя.
По умолчанию: false
mime_type(строка)

MIME типы файлов, которые нужно показывать в окне при выборе файлов для загрузки. Несколько типов можно указать через запятую.

Этот фильтр не влияет реально на загружаемые файлы, а просто помогает убрать лишние типы при выборе...

Список возможных значений:

  • text - text/plain, text/html, text/css, text/javascript
  • image - image/gif, image/png, image/jpeg, image/bmp, image/webp
  • audio - audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
  • video - video/webm, video/ogg
  • application - application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

По умолчанию: ''

Заметка: параметр multiple для этого поля всегда равен true.

Код для создания поля

array(
	'id'               => 'file',
	'name'             => 'File Advanced',
	'type'             => 'file_advanced',

	// удалять файл из медиатеки при удалении из метаполя?
	'force_delete'     => false,

	'max_file_uploads' => 2, // макс. можно загрузить

	// 'mime_type'        => 'application,audio,video', // типы файлов

	//'max_status'       => 'false', // Не показывать сколько еще файлов можно загрузить
),

Как хранятся данные

Сохраняет каждый ID вложения (файла) в отдельную строку таблицы метаполей. Клонируемое поле сохраняются в одну строку в виде сериализованного массива.

Как получить значения

См. примеры поля file

Фильтры

Для поля есть спец. фильтры, чтобы изменить тексты в метабоксе:

Фильтр Текст
rwmb_media_add_string + Add Media
rwmb_media_single_files_string file
rwmb_media_multiple_files_string files
rwmb_media_remove_string Remove
rwmb_media_edit_string Edit
rwmb_media_view_string View

Этот код изменить текст «+ Add new file»:

add_filter( 'rwmb_media_add_string', 'prefix_change_add_string' );
function prefix_change_add_string(){
	return '+ New File';
}

file_upload

Выводит поле для загрузки файла (куда можно закинуть файл).

При загрузке НЕ используется «Медиа окно WordPress», т.е. нельзя выбрать уже загруженный файл. Можно загружать только новые файлы.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Сколько максимально можно загрузить файлов. Если не указать параметр, то без ограничений.
По умолчанию: 0 (бесконечно)
max_status (true/false)
Нужно ли показывать сколько файлов загружено/осталось загрузить. Работает только когда указан параметр max_file_uploads.
По умолчанию: true
force_delete(true/false)
Нужно ли удалять файл из медиа-библиотеки при удалении его из метаполя.
По умолчанию: false
mime_type(строка)

MIME типы файлов, которые нужно показывать в окне при выборе файлов для загрузки. Несколько типов можно указать через запятую.

Этот фильтр не влияет реально на загружаемые файлы, а просто помогает убрать лишние типы при выборе...

Список возможных значений:

  • text - text/plain, text/html, text/css, text/javascript
  • image - image/gif, image/png, image/jpeg, image/bmp, image/webp
  • audio - audio/midi, audio/mpeg, audio/webm, audio/ogg, audio/wav
  • video - video/webm, video/ogg
  • application - application/octet-stream, application/pkcs12, application/vnd.mspowerpoint, application/xhtml+xml, application/xml, application/pdf

По умолчанию: ''

max_file_size(строка)
Макс. размер файла, который можно загрузить. Нужно указать один из суффиксов: b, kb, mb, gb, например: 10mb или 1gb.
По умолчанию: установки wordpress

Заметка: параметр multiple для этого поля всегда равен true.

Код для создания поля

array(
	'id'               => 'file',
	'name'             => 'File upload',
	'type'             => 'file_upload',

	// удалять файл из медиатеки при удалении из метаполя?
	'force_delete'     => false,

	'max_file_uploads' => 2, // макс. можно загрузить

	// 'mime_type'        => 'application,audio,video', // типы файлов

	// 'max_status'       => 'false', // Не показывать сколько еще файлов можно загрузить
),

Как хранятся данные

Сохраняет каждый ID вложения (файла) в отдельную строку таблицы метаполей. Клонируемое поле сохраняются в одну строку в виде сериализованного массива.

Как получить значения

См. примеры поля file

Фильтры

Для поля есть спец. фильтры, чтобы изменить тексты в метабоксе:

Фильтр Текст
rwmb_media_add_string + Add Media
rwmb_media_single_files_string file
rwmb_media_multiple_files_string files
rwmb_media_remove_string Remove
rwmb_media_edit_string Edit
rwmb_media_view_string View
rwmb_media_select_string Select Files
rwmb_media_or_string or
rwmb_media_upload_instructions_string Drop files here to upload

Этот код изменить текст «+ Add new file»:

add_filter( 'rwmb_media_add_string', 'prefix_change_add_string' );
function prefix_change_add_string(){
	return '+ New File';
}

file_input

Создает простое текстовое поле для установки в него URL к файлу. Есть возможность выбрать файл из медиатеки WordPress или можно просто вставить URL файла расположенного на другом хостинге в текстовое поле.

Индивидуальных параметров нет - может принимать только общие параметры.

Код для создания поля

array(
	'id'    => 'file',
	'name'  => 'File',
	'type'  => 'file_input',

	'clone' => true, // клонируемое поле
),

Как хранятся данные

Сохраняет URL файла в базу данных. Если поле клонируемое, сохраняет все поля в одну ячейку в виде сериализованного массива.

Как получить значения

Чтобы получить URL файла, используйте такой код:

$value = rwmb_meta( $field_id );

// или
$value = get_post_meta( $post_id, $field_id, 1 );

echo $value;

Когда нужно показать файл как картинку:

$value = rwmb_meta( $field_id );
echo '<img src="'. $value .'" alt="">';

heading

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

Код для создания поля

array(
	'type' => 'heading',
	'name' => 'Заголовок',
	'desc' => 'Описание для заголовка',
),

hidden

Создает обычное скрытое поле type="hidden". Используется чтобы создать данные, которые невозможно изменить.

Чтобы указать значение крытого поля используйте параметр std.

Код для создания поля

array(
	'id'   => 'field_id',
	'type' => 'hidden',
	'std'  => 'Hidden value', // предустановленное значение
),

Как хранятся данные

Несмотря на то что значение жестко указано в коде, оно все равно сохраняется в метаполе.

Как получить значения

Получим значение скрытого поля:

$value = rwmb_meta( $field_id );
echo $value;

image

Создает поле <input type="file"> для загрузки картинок. Для загрузки картинки используется окно браузера, а не «Медиа окна WordPress».

Поле очень похоже на поле file. Разница лишь в том, что это поле позволяет загружать только картинки, а не любые типы файлов.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Максимально возможное кол-во картинок для загрузки.
По умолчанию: 0 (без ограничений)
force_delete(true/false)

Нужно ли удалять картинку из медиа-библиотеки при удалении её из метаполя.

Заметка: если установленная картинка используется в другой записи или где-то еще, то после удаления ссылка в других местах станет битой.
По умолчанию: false

Код для создания поля

array(
	'name'             => 'Image Upload',
	'id'               => 'field_id',
	'type'             => 'image',

	// удалять картинку из медиатеки при удалении из метаполя?
	// 'force_delete'     => true,

	'max_file_uploads' => 2, // макс. кол-во файлов
),

Как хранятся данные

Сохраняет каждый ID вложения (файла) в отдельную строку таблицы метаполей. Клонируемое поле сохраняются в одну строку в виде сериализованного массива.

Как получить значения

Для получения загруженных картинок, используйте функцию rwmb_meta():

$images = rwmb_meta( 'info', array( 'size'=>'thumbnail' ) );
foreach ( $images as $image ) {
	echo '<a href="', $image['full_url'], '"><img src="', $image['url'], '"></a>';
}

Второй параметр rwmb_meta() - это массив, в который можно указать следующие аргументы:

  • size - размер возвращаемой картинки. По умолчанию thumbnail.
  • limit - сколько картинок нужно получить.

rwmb_meta() возвращает массив данных о картинке, каждый элемент содержит такой массив:

array(
	'ID'          => 123,
	'name'        => 'logo-150x80.png',
	'path'        => '/var/www/wp-content/uploads/logo-150x80.png',
	'url'         => 'https://example.com/wp-content/uploads/logo-150x80.png',
	'width'       => 150,
	'height'      => 80,
	'full_url'    => 'https://example.com/wp-content/uploads/logo.png',
	'title'       => 'Logo',
	'caption'     => 'Logo caption',
	'description' => 'Used in the header',
	'alt'         => 'Logo ALT text',
	'srcset'      => 'large.jpg 1920w, medium.jpg 960w, small.jpg 480w',
	'sizes'       => array(), // список размеров, см.  https://wp-kama.ru/function/wp_get_attachment_metadata
	'image_meta'  => array(), // список метаданных, см. https://wp-kama.ru/function/wp_get_attachment_metadata
);

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

<?php
$images = rwmb_meta( 'info', array( 'limit' => 1 ) );
$image = reset( $images );
?>
<img src="<?php echo $image['url']; ?>">

Вывод картинок в виде UL списка:

rwmb_the_value( $field_id, array( 'size' => 'thumbnail' ) );

/* получим
<ul>
	<li><a href="link/to/full-size1"><img src="link/to/image1"></a></li>
	<li><a href="link/to/full-size2"><img src="link/to/image2"></a></li>
</ul>
*/

Фильтры

См. в описании поля file

image_advanced

Использует «медиа окно WordPress» для выбора или загрузки картинки. Также есть возможность поменять картинки местами - указать им порядок.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Максимально возможное кол-во картинок для загрузки.
По умолчанию: 0 (без ограничений)
max_status (true/false)
Нужно ли показывать сколько файлов загружено/осталось загрузить. Работает только когда указан параметр max_file_uploads.
По умолчанию: true
force_delete(true/false)

Нужно ли удалять картинку из медиа-библиотеки при удалении её из метаполя.

Заметка: если установленная картинка используется в другой записи или где-то еще, то после удаления ссылка в других местах станет битой.
По умолчанию: false

image_size(число)
Размер картинки, который отображается для редактирования.
По умолчанию: 'thumbnail'

Заметка: параметр multiple для этого поля всегда равен true.

Код для создания поля

array(
	'id'               => 'image',
	'name'             => 'Image Advanced',
	'type'             => 'image_advanced',

	   // удалять картинку из медиатеки при удалении из метаполя?
	// 'force_delete'     => true,

	'max_file_uploads' => 2, // макс. кол-во картинок для загрузки

	// 'max_status'       => false, // показать сколько загружено

	// 'image_size'       => 'thumbnail', // размер отображаемый для редактирования
),

Как хранятся данные

Сохраняет каждый ID вложения (файла) в отдельную строку таблицы метаполей. Клонируемое поле сохраняются в одну строку в виде сериализованного массива.

Как получить значения

См. примеры поля image.

Фильтры

См. в описании поля file_advanced

image_select

Выводит поле с предустановленными картинками одну или несколько из который можно выбрать. Похож на radio/checkbox выбор только в виде картинок для лучшего восприятия.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив вида 'значение' => 'URL картинки'. Значение будет сохраняться в метаполе, а URL будет выводиться в виде картинки.
multiple(true/false)
Можно ли выбирать несколько картинок одновременно?
По умолчанию: false

Код для создания поля

array(
	'id'       => 'image_select',
	'name'     => 'Layout',
	'type'     => 'image_select',

	// массив картинок
	'options'  => array(
		'left'  => 'http://placehold.it/90x90&text=Left',
		'right' => 'http://placehold.it/90x90&text=Right',
		'none'  => 'http://placehold.it/90x90&text=None',
	),

	// 'multiple' => true, // разрешить выбирать сразу несколько
),

Как хранятся данные

В БД сохраняется ключ массива options.

Каждое значение сохраняется в отдельную строку таблицы метаполей, ключ метаполя при этом одинаковый. Как это делает add_post_meta(), когда последний параметр равен false. Если поле клонируемое, то все данные сохраняются в одну строку в виде сериализованного массива.

Как получить значения

$value = rwmb_meta( $field_id );
echo $value;

Для multiple:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

image_upload

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Максимально возможное кол-во картинок для загрузки.
По умолчанию: 0 (без ограничений)
max_status (true/false)
Нужно ли показывать сколько файлов загружено/осталось загрузить. Работает только когда указан параметр max_file_uploads.
По умолчанию: true
force_delete(true/false)

Нужно ли удалять картинку из медиа-библиотеки при удалении её из метаполя.

Заметка: если установленная картинка используется в другой записи или где-то еще, то после удаления ссылка в других местах станет битой.
По умолчанию: false

image_size(число)
Размер картинки, который отображается для редактирования.
По умолчанию: 'thumbnail'
max_file_size(строка)
Макс. размер файла, который можно загрузить. Нужно указать один из суффиксов: b, kb, mb, gb, например: 10mb или 1gb.
По умолчанию: установки wordpress

Заметка: параметр multiple для этого поля всегда равен true.

Код для создания поля

array(
	'id'               => 'image',
	'name'             => 'Image upload',
	'type'             => 'image_upload',

	// удалять картинку из медиатеки при удалении из метаполя?
	// 'force_delete'     => true,

	'max_file_uploads' => 2, // макс. кол-во картинок для загрузки

	// 'max_status'       => false, // показать сколько загружено

	// 'image_size'       => 'thumbnail', // размер отображаемый для редактирования
),

Как хранятся данные

Сохраняет каждый ID вложения (файла) в отдельную строку таблицы метаполей. Клонируемое поле сохраняются в одну строку в виде сериализованного массива.

Как получить значения

См. примеры поля image.

Фильтры

См. описание file_upload


key_value

Позволяет добавлять бесконечное множество пар ключ - значение. Обычно используется для какого-нибудь списка элементов, например для списка продуктов и их вес.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

placeholder(массив)
Массив текстов placeholder для указанных пар ключ => значение. Формат:
array( 'key'=>'key placeholder', 'value'=>'value placeholder' )
size(число)
Размер input поля.
По умолчанию: 30

Заметка: общие параметры multiple и clone всегда равны true для этого поля.

Код для создания поля

array(
	'id'   => 'key_value',
	'name' => 'Key Value',
	'type' => 'key_value',
	'desc' => 'Add more additional info below:',
	'placeholder' => array( 'key'=>'key placeholder', 'value'=>'value placeholder' ),
),

Как хранятся данные

Всегда сохраняется в одну строку в виде сериализованного массива.

Как получить значения

<?php
$pairs = rwmb_meta( $field_id );
foreach ( $pairs as $pair ) {
	?>
	<p><strong><?php echo $pair[0]; ?>:</strong> <?php echo $pair[1]; ?></p>
	<?php
}

Вывод значение в UL списке:

rwmb_the_value( $field_id );

/* получим:
<ul>
	<li><label>key1:</label> value1</li>
	<li><label>key2:</label> value2</li>
</ul>
*/

map

Создает Google карту, на которой можно выбрать локацию (расположение). К этому полю добавляется текстовое поле с возможностью авто-заполнения, в которое нужно указать адрес. Данные для авто-заполнения берутся из сервиса геолокаций Google (Google Maps Geocode service).

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

api_key(строка) (обязательное)

API ключ от Google Maps. Получать его нужно по этой ссылке.

ВАЖНО: без рабочего API ключа карта работать не будет.

address_field(строка) (обязательное)

ID текстового поля адрес.

Для получения ID вам нужно создать текстовое поле (text) и указать здесь его ID. Поле text удобнее создавать сразу до или после поля map.

Можно указать несколько ID текстовых полей, разделенных запятой. Например: street,city,state. Но в этом случае не будет работать авто-заполнение, вместо этого, при клике на кнопку «Найти адрес» (расположена внизу поля), адрес будет собран из указанных полей и будет установлена локация на карте.

region(строка)
Код региона, определяется как домен первого уровня кода страны, например .ru для России. Подробнее здесь. Влияет на поиск локаций при авто-заполнении адреса. Подробнее читайте в доках google.
По умолчанию: число

Код для создания поля

// Address field.
array(
	'id'   => 'address',
	'name' => 'Address',
	'type' => 'text',
),
// Map field.
array(
	'id'            => 'map',
	'name'          => 'Location',
	'type'          => 'map',

	// Локация по умолчанию: формат: 'latitude,longitude[,zoom]' (zoom не обязательно)
	'std'           => '-6.233406,-35.049906,15',

	// ID текстового поля для адреса
	'address_field' => 'address',

	// Google API ключ
	'api_key'       => 'XXXXXXXXX',
),

Как хранятся данные

Сохраняет данные в БД в таком формате: latitude,longitude,zoom

Вывод карты на экран

Для вывода карты во фронте, надо использовать функцию rwmb_meta() и передать ей доп. параметры:

echo rwmb_meta( 'field_id', array(
	'width'        => '640px',
	'height'       => '480px',
	'zoom'         => 14,
	'marker'       => true,
	'marker_title' => 'Кликни меня',
	'info_window'  => '<h3>Заголовок</h3><p>Контент</p>.',
) );
  • width - ширина карты. По умолчанию 640px. Может быть в % или px.
  • height - высота карты. По умолчанию 480px. Может быть в % или px.
  • zoom - приближение карты. По умолчанию установлено в админке, если нет, то 14.
  • marker - показывать ли маркер? true (по умолчанию) или false.
  • marker_title - заголовок маркера при наведении на него.
  • info_window - контент для окна информации, когда кликаем на маркер. Можно указать HTML код. Этот контент будет передан в JS, поэтому лучше не использовать кавычки...
  • js_options - произвольные опции для JS. См. здесь.

Код ниже показывает как использовать параметр js_options:

echo rwmb_meta( 'field_id', array(
	'width'      => '640px',
	'height'     => '480px',
	'js_options' => array(
		'mapTypeId'   => 'HYBRID',
		'zoomControl' => false,
	)
) );

Получение значения поля

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

$location = rwmb_get_value( $field_id );
echo $location['latitude'];
echo $location['longitude'];
echo $location['zoom'];

Вывод карты в группе

Если ваша карта является частью клонируемой/не-клонируемой группы, тогда функции из примеров выше работать не будут. Для получения таких данных используйте такой код:

$group_values = rwmb( 'group_id' );

// если группа клонируемая
foreach ( $group_values as $group_value ) {
	echo RWMB_Map_Field::render_map( $group_value['map_id'] );
}

Функция RWMB_Map_Field::render_map( $location, $args ) может получить два параметра:

  • $location - позиция центра карты (маркера) в формате latitude,longitude[,zoom]. Формат такой же, какой сохраняется в значении метаполя.

  • $args - доп. параметры для карты. Такие же как параметры функции rwmb_meta() выше.

number

Создает обычное HTML5 input числовое поле: <input type="number">, в котором можно ввести число или использовать стрелки вверх/вниз для изменения числа. Работает с целыми и дробными числами.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

step(число)

Шаг для увеличения/уменьшения числа по стрелкам. Можно указать: положительное целое число или строку any (для дробных чисел).

Если НЕ указано any, то значение поля может быть только значением кратным к указанному шагу и больше чем указанное минимальное число в параметре min.
По умолчанию: 1

min(число)
Минимальное возможное значение.
По умолчанию: null
max(число)
Максимальное возможное значение.
По умолчанию: null
placeholder(строка)
placeholder для поля.
По умолчанию: ''

Код для создания поля

array(
	'name' => 'Number',
	'id'   => 'number',
	'type' => 'number',

	'min'  => 0,
	'step' => 5,
),

Как хранятся данные

Число сохраняется в одну ячейку таблицы метаполей.

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

Как получить значения

$value = rwmb_meta( $field_id );
echo $value;

oembed

Создает простое текстовое поле, для ввода в него URL на медиа-контент (видео, аудио). После ввода URL под полем будет показан контент, который возвращается по ссылке, например, видео Youtube. Поддерживает множество медиа сайтов.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

size(число)
Размер текстового поля (ширина).
По умолчанию: 30

Код для создания поля

array(
	'id'    => 'oembed',
	'name'  => 'oEmbed(s)',
	'type'  => 'oembed',

	'size'  => 30, // размер поля (ширина)
),

Как хранятся данные

Сохраняет указанный URL в метаполе. Если поле клонируемое, то данные всех полей сохраняются в виде сериализованного массива.

Как получить значения

Для вывода медиа, используйте rwmb_meta().

$media = rwmb_meta( $field_id );
echo $value;

Этот код выведет готовый меда контент, например если сохранена ссылка на Youtube то выведет видео.

Если нужно получить саму ссылку сохраненную в поле, используйте rwmb_get_value():

$url = rwmb_get_value( $field_id );
echo $url

password

Создает input поле для ввода пароля: <input type="password">.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

size(число)
Размер текстового поля (ширина).
По умолчанию: 30

Код для создания поля

array(
	'name' => 'Password',
	'id'   => 'password',
	'type' => 'password',
),

Как хранятся данные

Пароль перед сохранением кодируется с помощью wp_hash_password(). Для того, чтобы он хранился в безопасном виде.

Как получить значения

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

Вместо того, чтобы пытаться получить оригинальный пароль, нужно проверять какой-нибудь пароль на соответствие с сохраненным хэшем пароля:

$value = rwmb_meta( $field_id );
if ( $value === wp_hash_password( 'password to check' ) ) {
	echo 'Пароль верен';
}

post

Выводит посты (записи, страницы или свои типы) для выбора.

Поддерживает разные стили оформления. Если тип поста иерархический, можно отображать поле в виде выпадающего списка или чекбоксов. Например, показывать дочерние посты, когда выбран родительский пост.

Горизонтальный список из радиокнопок:

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

post_type(строка/массив) (обязательное)
Тип поста. Указывается в виде строки, если один, и в виде массива, если несколько.
query_args(массив)
Параметры, которые передадутся WP_Query для получения постов.
По умолчанию: array()
parent(true/false)
Сделает выбранную в списке запись родителем для текущей редактируемой записи. При этом в метаполя ничего не сохраняется, а для текущей записи указывается значение поля post_parent.
По умолчанию: false
placeholder(строка)
placeholder для input поля (текст внутри текстового поля). Работает при 'field_type' => 'select'.
По умолчанию: Select a {post label}
field_type(строка)

Как отображать список постов.

  • select - простой выпадающий список. Наследует настройки у поля select.
  • select_advanced - удобный выпадающий список (select2). Наследует настройки у поля select_advanced.
  • select_tree - иерархический выпадающий список. Применяется к иерархическим типам записей (например, страницам). При выборе страницы, если в ней есть вложенные, рядом появляется ещё один выпадающий список. И так до конца дерева. Наследует настройки у поля select.
  • checkbox_list - список из флажков, позволяет выбирать несколько записей. Наследует настройки у поля checkbox_list. У этого типа параметр multiple всегда true.
  • checkbox_tree - список из флажков для постов верхнего уровня. При выборе поста, если у него есть вложенные - они отобразятся со смещением вправо. Тем самым выбирая родительский пост, вы открываете дерево из дочерних.
  • radio_list - список из радиокнопок, можно выбирать только один пост. Наследует настройки у поля radio.
    По умолчанию: select_advanced

Для select_tree, checkbox_list и checkbox_tree параметр multiple всегда true.

Код для создания поля

Выведет удобный select2 выпадающий список:

array(
	'name'        => 'Выберите страницу',
	'id'          => 'page',
	'type'        => 'post',

	// Тип поста.
	'post_type'   => 'page',

	// Стиль поля.
	'field_type'  => 'select_advanced',

	// Подсказка
	'placeholder' => 'Выберите страницу',

	// Параметры запроса. Смотрите https://wp-kama.ru/function/wp_query
	'query_args'  => array(
		'post_status'    => 'publish',
		'posts_per_page' => - 1,
	),
),

Как хранятся данные

Сохраняются ID выбранных записей.

Если активен параметр multiple (можно выбрать несколько постов), то ID каждого поста сохраняется в отдельную строку таблицы метаполей с одинаковым ключом. Поэтому, если используется get_post_meta() для получения значения поля, последним параметром надо указать false.

Если поле клонируемое, то значение сохраняется в виде сериализованного массива в одной строке базы данных.

Если 'parent' => true, то поле ничего не сохраняет в метаполя, а использует стандартный механизм WordPress: для текущей записи указывается значение поля post_parent, т.е. указывается родительская запись.

Как получить значения

Если поле не multiple:

$post_id = rwmb_meta( $field_id );
echo get_the_title( $post_id );

Если поле multiple:

$post_ids = rwmb_meta( $field_id );
foreach ( $post_ids as $post_id ) {
	// Выведем заголовки постов
	echo '<p>', get_the_title( $post_id ), '</p>';
}

Вывести UL список выбранных постов:

rwmb_the_value( $field_id );

Получим нечто подобное:

<ul>
	<li><a href="http://wp-test.ru/eto-stranitsa/" title="Это страница">Это страница</a></li>
	<li><a href="http://wp-test.ru/authorize/" title="Авторизация">Авторизация</a></li>
	<li><a href="http://wp-test.ru/contacts/" title="Обратная связь">Обратная связь</a></li>
</ul>

radio

Создает простой список из радиокнопок, где можно выбрать один вариант из предопределенного списка.

Вертикально:

Горизонтально:

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив, где пара 'value' => 'Label' является пунктом списка. В базу данных будет сохраняться value выбранного пункта.
inline(true/false)
Отображать радиокнопки горизонтально (true) или вертикально (false).
По умолчанию: true

Для этого типа поля параметр multiple всегда false. То есть можно выбрать только один вариант.

Код для создания поля

array(
	'name'    => 'Настроение',
	'id'      => 'mood',
	'type'    => 'radio',

	// Радиокнопки
	'options' => array(
		'excellent' => 'Отличное',
		'good'      => 'Хорошее',
		'so-so'     => 'Так себе',
		'bad'       => 'Плохое',
	),

	// Показывать в строку?
	'inline'  => false,
),

Как хранятся данные

Значение сохраняется в одну ячейку таблицы метаполей.

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

Как получить значения

$value = rwmb_meta( $field_id );
echo $value; // Выведет к примеру, "excellent"

Функция rwmb_meta() возвращает только значение поля, ключ в массиве options. Чтобы отобразить метку (Label) поля, используйте код:

rwmb_the_value( $field_id ); // Выведет к примеру, "Отличное"

range

Поле в виде ползунка для выбора числового значения. Поле range очень похоже на поле slider, только вместо jQuery UI использует стандартные возможности HTML5. Также поле range похоже на поле number, только вместо ручного ввода цифр используется бегунок.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

step(число)
Шаг ползунка.
По умолчанию: 1
min(число)
Минимальное число.
По умолчанию: 0
max(число)
Максимальное число.
По умолчанию: 10

Код для создания поля

array(
	'name' => 'Качество',
	'id'   => 'quality',
	'type' => 'range',

	'min'  => 0,
	'max'  => 100,
	'step' => 5,
),

Как хранятся данные

Значение сохраняется в одну ячейку таблицы метаполей.

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

Как получить значения

$value = rwmb_meta( $field_id );
echo $value;

select

Поле select создает простой выпадающий список. Можно выбрать одно или несколько значений из предопределенного списка.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив) (обязательное)
Массив, где пара 'value' => 'Label' является пунктом списка. В базу данных будет сохраняться value выбранного пункта или пунктов.
multiple(true/false)
Можно (true) или нет (false) выбирать несколько значений?
По умолчанию: false
placeholder(строка)
Выводит текст внутри текстового поля, который исчезает при получении фокуса.
По умолчанию: ''
select_all_none(true/false)
Отображать (true) или нет (false) кнопки "Выбрать: Все | Ничего". Возможность доступна, если только включена опция multiple.
По умолчанию: false

Код для создания поля

array(
	'name'            => 'Языки программирования',
	'id'              => 'lang-prog',
	'type'            => 'select',
	// Пункты
	'options'         => array(
		'java'       => 'Java',
		'javascript' => 'JavaScript',
		'php'        => 'PHP',
		'csharp'     => 'C#',
		'objectivec' => 'Objective-C',
		'kotlin'     => 'Kotlin',
		'swift'      => 'Swift',
	),
	// Можно выбрать несколько вариантов?
	'multiple'        => true,
	// Подсказка внутри поля.
	'placeholder'     => 'Выберите ЯП',
	// Показать кнопки "Выбрать: Все | Ничего"?
	'select_all_none' => true,
),

Как хранятся данные

Если multiple => false, то в базу сохраняется значение выбранного пункта. Значением пункта является ключ value выбранного пункта в массиве options.

Если multiple => true, то поле сохраняет несколько value, где каждый из них хранится отдельно под одинаковыми ключами (аналогично тому, как это делает add_post_meta() с последним параметром false).

Если поле клонируемое, то значение сохраняется в виде сериализованного массива в одной строке базы данных.

Как получить значения

Если поле неклонируемое:

$value = rwmb_meta( $field_id );
echo $value;

Если поле клонируемое ИЛИ разрешен выбор нескольких значений:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

Если поле клонируемое И разрешен выбор нескольких значений:

$values = rwmb_meta( $field_id );
foreach ( $values as $clone ) {
	foreach ( $clone as $value ) {
		echo $value;
	}
}

Функция rwmb_meta() возвращает только значение поля, например, ключ в массиве options. Чтобы отобразить метку (Label) поля, используйте код:

rwmb_the_value( $field_id );

В зависимости от того, поле с одним значением или оно множественное/клонируемое, rwmb_the_value() выведет или просто текст метки или маркерованный список меток.

select_advanced

Расширенная версия поля select позволяет выбирать предопределенные пункты из красивого выпадающего списка на основе библиотеки select2.

Это полная копия поля select, только в красивой оболочке.

В параметр js_options можно передать параметры для библиотеки select2.

По умолчанию для js_options указываются следующие параметры:

  • allowClear = true - Позволяет юзерам очищать выбор.
  • width = resolve - Установить ширину по ширине элемента.
  • placeholder = $field['placeholder'] - Позволяет placeholder работать как поле select.

Код для создания поля

array(
	'name'            => 'Выбор языков',
	'id'              => 'lang-prog',
	'type'            => 'select_advanced',

	'options'         => array(
		'java'       => 'Java',
		'javascript' => 'JavaScript',
		'php'        => 'PHP',
		'csharp'     => 'C#',
		'objectivec' => 'Objective-C',
		'kotlin'     => 'Kotlin',
		'swift'      => 'Swift',
	),

	'multiple'        => false,
	'placeholder'     => 'Select an Item',
	'select_all_none' => false,

	// Опции select2. Смотрите https://select2.org/configuration
	'js_options'      => array(
		'containerCssClass' => 'my-custom-class',
	),
),

sidebar

Позволяет выбрать один или несколько сайдбаров. Имеет несколько вариантов отображения списка сайдбаров.

Красивый выпадающий список с автоподбором на основе библиотеки select2:

Список из чекбоксов:

Вертикальный список из радиокнопок:

Горизонтальный список из радиокнопок:

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

placeholder(строка)
Плейсхолдер для поля типа select_advanced.
По умолчанию: Select a sidebar
field_type(строка)

Как отобразить список из сайдбаров.

  • select - простой выпадающий список. Наследует настройки у поля select.
  • select_advanced - красивый выпадающий список (select2). Наследует настройки у поля select_advanced.
  • checkbox_list - Список из флажков, можно выбирать несколько элементов. Наследует настройки у поля checkbox_list. Для checkbox_list параметр multiple всегда true.
  • checkbox_tree - Список из флажков для терминов верхнего уровня. При выборе термина, если у него есть вложенные - они отобразятся со смещением вправо. Тем самым выбирая родительский термин, вы открываете дерево из дочерних.
  • radio_list - Список из радиокнопок, можно выбирать только один элемент. Наследует настройки у поля radio.

По умолчанию: select_advanced

Код для создания поля

array(
	'name'        => 'Сайдбары',
	'id'          => 'sidebar',
	'type'        => 'sidebar',

	// Повторяемое поле?
	// 'clone'    => true,

	// Тип поля.
	'field_type'  => 'radio_list',

	// Сделать список горизонтальным?
	'inline'      => true,
),

Как хранятся данные

В базе данных хранятся ID сайдбара(ов). ID сайдбара задаются при регистрации сайдабара(ов) функцией register_sidebars().

Если разрешено выбрать лишь один вариант, то в базе данных сохраняется один идентификатор сайдбара. В противном случае поле сохраняет несколько идентификаторов, где каждый идентификатор сайдбара хранится отдельно под одинаковыми ключами (аналогично тому, как это делает add_post_meta() с последним параметром false).

Если поле клонируемое, то значение сохраняется в виде сериализованного массива в одной строке базы данных.

Как получить значения

Если поле неклонируемое:

$sidebar_id = rwmb_meta( $field_id );
if ( is_active_sidebar( $sidebar_id ) ) {
	dynamic_sidebar( $sidebar_id );
}

Если поле клонируемое:

$sidebar_ids = rwmb_meta( $field_id );
foreach ( $sidebar_ids as $sidebar_id ) {
	if ( is_active_sidebar( $sidebar_id ) ) {
		echo '<aside class="sidebar">';
		dynamic_sidebar( $sidebar_id );
		echo '</div>';
	}
}

Выведет все виджеты из выбранных сайдбаров:

rwmb_the_value( $field_id );

Если сайдбар один, то выведет виджеты как есть. Если их несколько, то в виде маркерованного списка.


single_image

Поле для выбора одного изображения. Оно такое же, как image_advanced, только позволяет выбрать одну картинку.

У поля нет специальных параметров, может принимать общие параметры полей.

Код для создания поля

array(
	'type' => 'single_image',
	'name' => 'Одиночное изображение',
	'id'   => 'my_image',
),

Как хранятся данные

Хранит ID изображения в метаданных.

Как получить значения

$image = rwmb_meta( $field_id, array( 'size' => 'thumbnail' ) );
echo '<a href="', $image['full_url'], '"><img src="', $image['url'], '"></a>';

Вторым аргументом функции rwmb_meta() можно указать размер, который нужно вернуть как основные данные. По умолчанию thumbnail. Размеры создаются функцией add_image_size().

Переменная $image в нашем случае будет иметь следующее содержимое:

Array (
	[width] => 150
	[height] => 150
	[file] => 2017/10/Tulips.jpg
	[sizes] => Array (
			[thumbnail] => Array
				(
					[file]      => Tulips-150x150.jpg
					[width]     => 150
					[height]    => 150
					[mime-type] => image/jpeg
				)

			[medium] => Array
				(
					[file]      => Tulips-300x225.jpg
					[width]     => 300
					[height]    => 225
					[mime-type] => image/jpeg
				)

			[medium_large] => Array
				(
					[file]      => Tulips-768x576.jpg
					[width]     => 768
					[height]    => 576
					[mime-type] => image/jpeg
				)

			[large] => Array
				(
					[file]      => Tulips-1024x768.jpg
					[width]     => 1024
					[height]    => 768
					[mime-type] => image/jpeg
				)

		)

	[image_meta] => Array
		(
			[aperture] => 0
			[credit] => David Nadalin
			[camera] =>
			 =>
			[created_timestamp] => 1202383991
			[copyright] => © Microsoft Corporation
			[focal_length] => 0
			[iso]           => 0
			[shutter_speed] => 0
			[title] =>
			[orientation] => 0
			[keywords] => Array()
		)

	[ID] => 69
	[name] => Tulips.jpg
	[path] => D:\OpenServer\domains\wp-test.ru/wp-content/uploads/2017/10/Tulips.jpg
	[url] => http://wp-test.ru/wp-content/uploads/2017/10/Tulips-150x150.jpg
	[full_url] => http://wp-test.ru/wp-content/uploads/2017/10/Tulips.jpg
	[title] => Это заголовок Tulips
	 => Это подпись
	[description] => Это описание
	[alt] => Это альт
	[srcset] => http://wp-test.ru/wp-content/uploads/2017/10/Tulips-300x225.jpg 300w, http://wp-test.ru/wp-content/uploads/2017/10/Tulips-768x576.jpg 768w, http://wp-test.ru/wp-content/uploads/2017/10/Tulips.jpg 1024w
)

Cразу отобразить изображение (можно указать какого размера):

rwmb_the_value( $field_id, array( 'size' => 'thumbnail' ) );

Получим:

<img src="http://wp-test.ru/wp-content/uploads/2017/10/Tulips-150x150.jpg" alt="Это альт">

Фильтры

Это поле наследуется от image_advanced и использует те же фильтры.


slider

Ползунок для выбора числового значения. Используется библиотека jQuery UI.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

prefix(строка)
Текст до отображаемого цифрового значения
По умолчанию: ''
suffix(строка)
Текст после отображаемого цифрового значения
По умолчанию: ''
js_options(массив)

Опции бегунка jQuery UI.

По умолчанию: array()

Код для создания поля

array(
	'name'       => 'Доллары',
	'id'         => 'price',
	'type'       => 'slider',

	// Заголовки
	'prefix'     => '$',
	'suffix'     => ' USD',

	// Опции бегунка jQuery UI. Документация http://api.jqueryui.com/slider/
	'js_options' => array(
		'min'  => 10,
		'max'  => 255,
		'step' => 5,
	),

	'std' => 150,
	// 'clone' => true,
),

Как хранятся данные

Поле сохраняет выбранное значение (без префикса и суффикса) в базе данных.

Если поле клонируемое, то значение сохраняется в виде сериализованного массива в одной строке базы данных.

Как получить значения

$value = rwmb_meta( $field_id );
echo $value;

switch

Поле switch позволяет создать переключатель, который принимает два положения - включен (on) или выключен (off).

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

style(строка)
Стиль переключателя. rounded - круглый, square - квадратный.
По умолчанию: rounded
on_label(строка)
Метка переключателя в режиме "Включен". Можно установить текст «Включить» или значок, например <i class="dashicons dashicons-yes"></i> (). По умолчанию стиль переключателя, как в iOS.
По умолчанию: ''
off_label(строка)
Тоже самое, что и on_label, только для позиции "Выключено".

Код для создания поля

array(
	'id'        => 'enable_money',
	'name'      => 'Хотите много денег?',
	'type'      => 'switch',

	// Стиль: rounded (по умолчанию) или square
	'style'     => 'square',
	'on_label'  => 'Да',
	'off_label' => 'Нет',
),

Как хранятся данные

Поле сохраняет статус «включено» и «выключено» в базе данных как «1» или «0».

Как получить значения

$value = rwmb_meta( $field_id );

if ( $value ) {
	// Делаем что-либо, если было выбрано "Включено".
}
else {
	// Делаем что-либо, если было выбрано "Выключено".
}

Чтобы вывести на экран заголовок on_label или off_label, в зависимости от выбора переключателя:

// Из примера выведет "Да" или "Нет", в зависимости от выбора в админке.
rwmb_the_value( $field_id );

Если on_label или off_label не были определены, то по умолчанию выведется On или Off.


taxonomy

Поле taxonomy позволяет выбрать один или несколько термов из указанной таксономии.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

taxonomy(строка|массив) (обязательное)
Ярлык (slug) или ярлыки таксономий.
query_args(массив)
Аргументы запроса для получения терминов. Используются те же аргументы, что и в get_terms().
По умолчанию: array()
placeholder(строка)
Текст плейсхолдера. Добавляется только к выпадающему списку.
По умолчанию: Select an {taxonomy}
field_type(строка)

Как отображать список терминов.

  • select - простой выпадающий список. Наследует настройки у поля select.
  • select_advanced - красивый выпадающий список (select2). Наследует настройки у поля select_advanced.
  • select_tree - Иерархический выпадающий список. Применяется к иерархическим таксономиям (например, рубрикам). Выбираете одну рубрику, если в неё есть вложенные, то рядом появляется ещё один выпадающий список. И так до конца вложенности, но не обязательно. Наследует настройки у поля select.
  • checkbox_list - Список из флажков, можно выбирать несколько элементов. Наследует настройки у поля checkbox_list. Для checkbox_list параметр multiple всегда true.
  • checkbox_tree - Список из флажков для терминов верхнего уровня. При выборе термина, если у него есть вложенные - они отобразятся со смещением вправо. Тем самым выбирая родительский термин, вы открываете дерево из дочерних.
  • radio_list - Список из радиокнопок, можно выбирать только один элемент. Наследует настройки у поля radio.
    По умолчанию: select_advanced

Для select_tree, checkbox_list и checkbox_tree параметр multiple всегда true.

Код для создания поля

array(
	'name'       => 'Рубрики',
	'id'         => 'cats',
	'type'       => 'taxonomy',

	// Ярлык таксономии.
	'taxonomy'   => 'category',

	// Как отобразить поле? В виде списка из чекбоксов.
	'field_type' => 'checkbox_list',
),

Как хранятся данные

Это поле не сохраняет значения в базе данных. Вместо этого оно устанавливает термины таксономии для текущего поста точно так же, как и в метабоксах «Категория» и «Теги».

Цель этого поля заменить стандартные метабоксы выбора таксономий и дать больше возможностей по их стилизации.

Если нужно хранить данные отдельно, то используйте поле taxonomy_advanced.

Как получить значения

Если поле содержит несколько значений:

$terms = rwmb_meta( $field_id );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
	foreach ( $terms as $term ) {
		echo '<p>', $term->name, '</p>';
	}
}

Если поле не клонируемое и не кратное (к примеру, когда можно выбрать только 1 элемент):

$term = rwmb_meta( $field_id );
echo '<p>', $term->name, '</p>';

Если надо вывести выбранные термины в виде маркированного списка:

rwmb_the_value( $field_id );

taxonomy_advanced

Поле идентично полю taxonomy, отличается лишь способом хранения данных.

  • taxonomy - не хранит данные как метаданные, а используется дефолтный механизм WordPress присвоения терминов посту. Точно так же, если бы их выбирали в метабоксе "Рубрики" или "Метки".
  • taxonomy_advanced - хранит ID выбранных терминов в метаполе.

Как хранятся данные

Если выбран одни термин, сохраняет ID термина в отдельное поле.

Если было выбрано несколько терминов, то их ID будут перечислены через запятую.

Если поле клонируемое, то значение сохраняется в виде сериализованного массива в одной строке базы данных.


text

Обычное текстовое поле <input type="text">. Можно ввести любой контент (текст, цифры, email, телефон и т.д.) или выбрать значение из предопределенного списка с помощью опции datalist.

Простое текстовое поле:

Текстовое поле с опцией datalist:

Клонируемое текстовое поле:

Клонируемому текстовому полю можно тоже задать опцию datalist.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

placeholder(строка)
Текст-подсказка внутри поля. При фокусе пропадает.
size(число)
html атрибут size.
По умолчанию: 30
datalist(массив)

Предопределенные значения, которые могут выбрать пользователи сразу или по мере ввода. Пользователи по-прежнему могут вводить текст, если захотят. Этот параметр имеет следующие опции:

  • id - css атрибут ID контейнера (тег datalist), в котором храниться список предопределенных значений (теги option). Обычное не используется и автоматически генерируется как {$field['id']_list. Полезно, если есть несколько текстовых полей с одним и тем же datalist.
  • options - Массив предопределенных значений для выбора и подстановки при наборе текста.

По умолчанию: array()

Код для создания поля

array(
	'name'        => 'Настроение',
	'id'          => 'field_id',
	'type'        => 'text',

	// Текст-подсказка внутри поля. Необязательный.
	'placeholder' => 'Введите или выберите настроение',

	// Размер. Необязательный.
	'size'        => 30,

	// Выпадающий список. Необязательный.
	'datalist'    => array(
		// Уникальный ID для выпадающей таблицы (css атрибут). Необязательный.
		'id'      => 'text_datalist',
		// Лист предопределенных значений
		'options' => array(
			'Хорошее',
			'Плохое',
			'Печальное',
			'Замечательное',
			'Волнительное',
			'Грустное',
			'Солнечное',
			'Дождливое',
			'Так себе',
			'Никакое',
		),
	),
),

Как хранятся данные

Число сохраняется в одну ячейку таблицы метаполей.

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

Как получить значения

Обычное поле:

$value = rwmb_meta( $field_id );
echo $value;

Клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

text_list

Список из полей типа text. Удобно, когда нужно создать группу полей, например из разряда "Контакты" (ФИО, email, телефон и т.д.).

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

options(массив)
Массив из 'плейсхолдер' => 'заголовок' для полей.
По умолчанию: array()

Код для создания поля

array(
	'id'   => 'text_list',
	'name' => 'Контакты',
	'type' => 'text_list',

	'clone'   => true,

	'options' => array(
		'Иван Иванов'     => 'Имя',
		'name@domain.com' => 'Email',
	),
),

Как хранятся данные

Каждое значение поля из группы хранится в отдельной строке. Ключ (он же ID поля) у группы полей одинаковый.

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

Как получить значения

Обычное поле:

$values = rwmb_meta( $field_id );
echo $value[0]; // Имя
echo $value[1]; // Email

Клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value[0]; // Имя
	echo $value[1]; // Email
}

Можно отобразить значение этого поля в виде таблицы:

rwmb_the_value( $field_id );

Получаемый html:

<table>
	<tr>
		<th>Имя</th>
		<th>Email</th>
	</tr>
	<tr></tr>
	<tr>
		<td>Василий Подопригора</td>
		<td>vasy@mail.ru</td>
	</tr>
	<tr>
		<td>Иван Иванов</td>
		<td>ivan@mail.ru</td>
	</tr>
</table>

textarea

Поле textarea создает область для текста. Вы можете использовать это поле для ввода многострочного текста или пользовательского HTML.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

placeholder(строка)
Текст-подсказка внутри поля. При фокусе пропадает.
cols(число)
Количество столбцов (одноименный html атрибут).
По умолчанию: 60
rows(число)
Количество строк (одноименный html атрибут).
По умолчанию: 4

Код для создания поля

array(
	'name'        => 'Область текста',
	'id'          => 'field_id',
	'type'        => 'textarea',

	// Эти параметры необязательные
	'placeholder' => 'Введите текст или html', // По умолчанию без placeholder
	'cols'        => 50, // По умолчанию 60
	'rows'        => 3, // По умолчанию 4
),

Как хранятся данные

Данные сохраняются в одну ячейку таблицы метаполей. Значение сохраняется как есть. Если Вы введете html код, то он сохранится как html.

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

Как получить значения

Обычное поле:

$value = rwmb_meta( $field_id );
echo $value;

Клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

time

Поле time позволяет выбрать время. Используется интерфейс jQuery UI.

По умолчанию выбор времени в виде ползунков:

Выбор времени в виде выпадающих списков:

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

size(число)
Размер поля. Используется как html атрибут size.
По умолчанию: 10
inline(true/false)
Окно выбора времени отображается при фокусе в поле (false) или отображается всегда (true).
По умолчанию: false
js_options(массив)
Опции jQuery UI Datepicker. См. оф. документацию.
По умолчанию: array()

Код для создания поля

array(
	'name' => 'Выбор времени',
	'id'   => 'field_id',
	'type' => 'time',

	// Опции, подробнее http://api.jqueryui.com/datepicker/
	'js_options' => array(
		'stepMinute'      => 15,
		'controlType'     => 'select',
		'showButtonPanel' => false,
		'oneLine'         => true,
	),

	// Отобразить сразу?
	'inline'     => true,
),

Как хранятся данные

Дата сохраняется в одну ячейку таблицы метаполей.

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

Как получить значения

Обычное поле:

$value = rwmb_meta( $field_id );
echo $value;

Клонируемое:

$values = rwmb_meta( $field_id );
foreach ( $values as $value ) {
	echo $value;
}

user

Поле user позволяет выбрать одного или нескольких пользователей. Несколько вариантов отображения в админке.

Красивый выпадающий список на основе select2.

Вертикальный список из чекбосов

Вертикальный список из радио-кнопок

Горизонтальный список из радио-кнопок

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

query_args(массив)
Аргументы запроса для получения пользователей. Используются те же аргументы, что и в get_users(). Если не указать, будут получены все пользователи.
По умолчанию: array()
placeholder(строка)
Текст плейсхолдера. Добавляется только к выпадающему списку.
По умолчанию: Select an user
field_type(строка)

Как отображать список пользователей.

  • select - простой выпадающий список. Наследует настройки у поля select.
  • select_advanced - красивый выпадающий список (select2). Наследует настройки у поля select_advanced.
  • checkbox_list - Список из флажков, можно выбирать несколько элементов. Наследует настройки у поля checkbox_list. Для checkbox_list параметр multiple всегда true.
  • radio_list - Список из радиокнопок, можно выбирать только один элемент. Наследует настройки у поля radio.
    По умолчанию: select_advanced

Код для создания поля

Отобразит всех пользователей в виде красивого выпадающего списка (select2):

array(
	'name'        => 'Пользователи',
	'id'          => 'user',
	'type'        => 'user',

	// Клонируемое поле.
	// 'clone'    => true,

	// Плейсхолдер.
	'placeholder' => 'Select an author',

	// Параметры запроса на выборку пользователей. Не обязательно. Если не указать, будут получены все пользователи.
	// @see https://wp-kama.ru/function/get_users
	'query_args'  => array(),
),

Отобразит всех пользователей в виде горизонтального списка из радиокнопок:

array(
	'name'        => 'Пользователи',
	'id'          => 'user',
	'type'        => 'user',
	'field_type'  => 'radio_list',
	'inline'      => true,
),

Как хранятся данные

Значение поля хранится в базе как ID пользователя.

Если активен параметр multiple (можно выбрать несколько пользователей), то значение по каждому пользователю сохраняется отдельно, ключ метаполя у них одинаковый. Поэтому, если используется add_post_meta() для получения значения поля, последним параметром надо указать false.

Если поле клонируется, то значение сохраняется в виде сериализованного массива в одной строке базы данных.

Как получить значения

Если поле не multiple, то:

$user_id = rwmb_meta( $field_id );
$user = get_userdata( $user_id );
echo 'Username: ', $user->user_login;
echo 'User display name: ', $user->display_name;

Если поле multiple, то вернется массив и код примет вид:

$user_ids = rwmb_meta( $field_id );
foreach ( $user_ids as $user_id ) {
	$user = get_userdata( $user_id );
	echo 'Username: ', $user->user_login;
	echo 'User display name: ', $user->display_name;
}

Вывод выбранных пользователей в виде маркерованного списка из ссылок на их профили:

rwmb_the_value( $field_id );

Получится:

<ul>
	<li>
		<a href="http://wp-test.ru/author/user_author_1/">User_Author_1</a>
	</li>
	<li>
		<a href="http://wp-test.ru/author/user_contributor_1/">User_Contributor_1</a>
	</li>
</ul>

video

Использует всплывающее окно WordPress для выбора видео из медиагалереи или его загрузки. Можно выбрать несколько видео.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

max_file_uploads(число)
Максимальное количество добавляемых видео.
По умолчанию: 0 (без ограничений)
force_delete(true/false)
Удалять (true) или не удалять (false) видео из медиабиблиотеки при удалении его из метаполя. Будьте с этим параметром аккуратны, видеофайл удаляется физически и из БД!
По умолчанию: false
max_status(true/false)
Показывать (true) или не показывать (false) счетчик сколько из скольки добавлено видео в метаполе. Счетчик будет отображаться, если указан параметр max_file_uploads более 1.

Код для создания поля

array(
	'name'             => 'Video',
	'id'               => 'field_id',
	'type'             => 'video',

	// Сколько максимум можно добавить видеофайлов в поле.
	'max_file_uploads' => 3,

	// Удалить видеофайл при удалении его с метаполя? По умолчанию: false.
	'force_delete'     => false,

	// Выведет счетчик "Uploaded 1/3 videos".
	'max_status'       => true,
),

Как хранятся данные

Так же, как и у поля file, значение поле хранится в виде ID вложения.

Каждое значение (ID видеофайла) хранится в отдельной строке таблицы с ключом, что указан у поля как id. Данные сохраняются аналогично тому, как это делает add_post_meta() с последним параметром false).

Как получить значения

$videos = rwmb_meta( 'field_id' );
foreach ( $videos as $video ) {
	?>
	<video src="<?php echo $video['src']; ?>">
	<?php
}

К примеру, если были указаны 2 видео в поле, то содержимое переменной $videos будет подобным:

Array
(
	[206] => Array
		(
			[ID] => 206
			[src] => http://wp-test.ru/wp-content/uploads/2018/01/WordCamp-v-Moskve-2017.mkv
			[type] => video/x-matroska
			[title] => WordCamp в Moскве 2017
			 =>
			[description] =>
			[meta] => Array
				(
					[length_formatted] => 1:01
				)

			[dimensions] => Array
				(
					[width] => 1366
					[height] => 768
				)

			[image] => Array
				(
					[src] => http://wp-test.ru/wp-includes/images/media/video.png
					[width] => 48
					[height] => 64
				)

			[thumb] => Array
				(
					[src] => http://wp-test.ru/wp-includes/images/media/video.png
					[width] => 48
					[height] => 64
				)

		)

	[207] => Array
		(
			[ID] => 207
			[src] => http://wp-test.ru/wp-content/uploads/2018/01/Vyshel-WordPress-4.8.2.mkv
			[type] => video/x-matroska
			[title] => Вышел WordPress 4.8.2
			 =>
			[description] =>
			[meta] => Array
				(
					[length_formatted] => 2:30
				)

			[dimensions] => Array
				(
					[width] => 1366
					[height] => 768
				)

			[image] => Array
				(
					[src] => http://wp-test.ru/wp-includes/images/media/video.png
					[width] => 48
					[height] => 64
				)

			[thumb] => Array
				(
					[src] => http://wp-test.ru/wp-includes/images/media/video.png
					[width] => 48
					[height] => 64
				)

		)

)

Если нужно получить только 1 видео, используется параметр limit:

$videos = rwmb_meta( 'field_id', array( 'limit' => 1 ) );
$video = reset( $videos );
?>
<video src="<?php echo $video['src']; ?>">

wysiwyg

Поле wysiwyg - это визуальный редактор WordPress. Можно вводить любой контент, как и при создании контента в основном редакторе WordPress. Также есть режим HTML.

Параметры поля

Может принимать общие параметры полей, а также индивидуальные:

raw(true/false)
Позволяет сохранить контент поля в обработанном виде с помощью функции wpautop().
По умолчанию: false
options(массив)

Массив параметров редактора, который третьим параметров в функцию wp_editor().

По умолчанию плагин в options сразу добавляет две опции:

  • editor_class (строка)
    Дополнительные CSS классы к полю textarea.
    По умолчанию: rwmb-wysiwyg

  • dfw (true/false)
    Разрешает редактору переходить в полноэкранный режим.
    По умолчанию: true

Код для создания поля

array(
	'name'    => 'WYSIWYG / Rich Text Editor',
	'id'      => 'field_id',
	'type'    => 'wysiwyg',
	'options' => array(
		'textarea_rows' => 4,
		'teeny'         => true,
	),
),

Как хранятся данные

Если параметр raw был указан, как true - данные сохраняться как есть, иначе - перед сохранением будут пропущены через функцию wpautop().

Как получить значения

Получаем и выводим значение поля:

$value = rwmb_meta( $field_id );
echo $value;

В данном случае значение поля будет выведено так, как сохранено в БД. Чтобы отформатировать контент и преобразовать шоткоды, используйте следующий код:

$value = rwmb_meta( $field_id );
echo do_shortcode( wpautop( $field_id ) );
campusboy 2726youtube.com/c/wpplus
Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 5193
Meta Box — типы полей Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр