register_post_meta()
Регистрирует метаполе (ключ произвольного поля) для постов.
Является обёрткой функции register_meta для удобной регистрации метаполей постов.
Чтобы мета-поля зарегистрированные таким образом работали в редакторе блоков, нужно чтобы при регистрации типа записи в поле supports
было значение custom-fields
:
register_post_type( 'book', [ ... 'supports' => [ 'title', 'editor', 'custom-fields', ... ], ... ] );
Чтобы сделать тоже самое для таксономии, смотрите register_term_meta().
Зарегистрированные метаполя хранятся в глобальном массиве $wp_meta_keys.
Хуков нет.
Возвращает
true|false
.
- true - если мета-ключ был успешно зарегистрирован в глобальном массиве $wp_meta_keys.
- false - если не удалось зарегистрировать ключ.
Использование
register_post_meta( $post_type, $meta_key, $args );
- $post_type(строка) (обязательный)
- Тип поста для которого регистрируется метаполе. Передайте пустую строку для регистрации мета-ключа для всех существующих типов постов.
- $meta_key(строка) (обязательный)
- Название ключа, который нужно зарегистрировать.
- $args(массив) (обязательный)
Данные описывающие метаполе. По умолчанию такие:
$args = array( 'type' => 'string', 'description' => '', 'single' => false, 'sanitize_callback' => null, 'auth_callback' => null, 'show_in_rest' => false, );
Описание каждого параметра смотрите в функции register_meta().
Примеры
#1 Регистрация метаполя только для страниц
register_post_meta( 'page', 'my_meta_key', [ // Добавим в ответ REST 'show_in_rest' => true, // Обработаем значение поля при сохранение его в базу, функцией absint() 'sanitize_callback' => 'absint', ] );
Теперь метаполе c ключом 'my_meta_key' будет зарегистрировано только для страниц.
Тоже самое можно сделать с помощью register_meta(), так:
register_meta( 'post', 'my_meta_key', [ 'object_subtype' => 'page', // тип поста 'show_in_rest' => true, 'sanitize_callback' => 'absint', ] );
#2 Еще пример
Дополнительные примеры и нюансы использования смотрите на странице функции register_meta().
Список изменений
С версии 4.9.8 | Введена. |
Код register_post_meta() register post meta WP 6.7.2
function register_post_meta( $post_type, $meta_key, array $args ) { $args['object_subtype'] = $post_type; return register_meta( 'post', $meta_key, $args ); }