WordPress. Произвольные поля. Часть 2 из 2
15.08.2019
Теги: CMS • Web-разработка • WordPress • МетаДанные
Если название мета-поля начинается с нижнего подчеркивания, например _edit_time
, то такое поле считается защищенным — используется для внутренних целей WordPress. Такие защищенные поля не выводятся в блоке мета-полей при редактировании записи. Проверить, является ли поле защищенным, можно с помощью функции is_protected_meta()
.
is_protected_meta( $meta_key, // ключ метаполя, которое нужно проверить $meta_type // тип метаполя: post, user, comment, term );
function is_protected_meta($meta_key, $meta_type = null) { $protected = ('_' == $meta_key[0]); return apply_filters('is_protected_meta', $protected, $meta_key, $meta_type); }
С помощью фильтра is_protected_meta
можно показать защищенные поля в блоке мета-полей при редактировании записи:
add_filter( 'is_protected_meta', function($protected, $meta_key, $meta_type) { // показываем скрытые поля для постов и страниц if ($meta_type == 'post') { return false; } }, 20, 3 );
Как изменять значения мета-полей
Функция update_post_meta()
Либо обновляет значение указанного мета-поля для указанного поста, либо добавляет новое, если поля не существует.
update_post_meta( $post_id, // идентификатор записи, мета-поле которого нужно изменить $meta_key, // ключ мета-поля, значение которого нужно изменить $meta_value, // устанавливаемое значение мета-поля $prev_value = '' // предыдущее значение мета-поля );
Если пост содержит несколько значений для одного и того же ключа и при этом если указан параметр $prev_value
, будет обновлено первое найденное значение.
Функция add_post_meta()
Добавляет мета-поле с указанным ключом для указанного поста.
add_post_meta( $post_id, // идентификатор записи, мета-поле к которому нужно добавить $meta_key, // ключ мета-поля, которое нужно добавить $meta_value, // устанавливаемое значение мета-поля $unique = false // это уникальное мета-поле? );
Если установить параметр $unique
в true
, то при добавлении поля, сначала будет проверяться существует ли уже поле с таким же ключом, если существует, то поле не будет добавлено.
Функция delete_post_meta()
Удаляет указанное мета-поле для указанного поста.
delete_post_meta( $post_id, // идентификатор записи $meta_key, // ключ мета-поля $meta_value // значение мета-поля );
Если оставить параметр $meta_value
пустым, то все значения мета-поля с указанным ключом будут удалены. Если нужно удалить только одно значение — в третьем параметре необходимо указать удаляемое значение.
Мета-данные для других сущностей
Мета-поля для записей хранятся в таблице БД wp_postmeta
. Аналогичные таблицы существуют для пользователей, комментариев и терминов. Все метаданные имеют одинаковую логику и таблицы одинаковой структуры в базе данных.
WordPress активно использует таблицы метаданных для записей и для пользователей. Менее активно используется таблица метаданных для комментариев — туда при помещении комментария в корзину записывается время удаления. И совсем не используется таблица метаданных для терминов.
Функции мета-данных
Почти все функции метаданных работают на основе четырех базовых функций. На основе этих четырех функций по сути построено API работы со всеми метаданными в WordPress.
add_metadata($meta_type, $object_id, $key, $value, $unique)
update_metadata($meta_type, $object_id, $key, $value, $prev_value)
delete_metadata($meta_type, $object_id, $key, $value, $delete_all)
get_metadata($meta_type, $object_id, $key, $single)
Для записей
get_post_meta($post_id, $key, $single)
add_post_meta($post_id, $key, $value, $unique)
update_post_meta($post_id, $key, $value, $prev_value)
delete_post_meta($post_id, $key, $value)
get_post_custom($post_id)
the_meta()
Для пользователей
get_user_meta($user_id, $key, $single)
add_user_meta($user_id, $key, $value, $unique)
update_user_meta($user_id, $key, $value, $prev_value)
delete_user_meta($user_id, $key, $value)
get_the_author_meta($field)
Для комментариев
get_comment_meta($comment_id, $key, $single)
add_comment_meta($comment_id, $key, $value, $unique)
update_comment_meta($comment_id, $key, $value, $prev_value)
delete_comment_meta($comment_id, $key, $value)
Для таксономий (терминов)
get_term_meta($term_id, $key, $single)
add_term_meta($term_id, $key, $value, $unique)
update_term_meta($term_id, $key, $value, $prev_value)
delete_term_meta($term_id, $key, $value)
has_term_meta($term_id)
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
- WordPress. Добавляем мета-теги. Часть 3 из 3
- WordPress. Метабоксы. Часть 2 из 2
- WordPress. Метабоксы. Часть 1 из 2
- WordPress. Добавляем мета-теги. Часть 2 из 3
Поиск: CMS • Web-разработка • WordPress • Произвольные поля • Мета данные • update_post_meta • add_post_meta • delete_post_meta