add_metadata()
Добавляет мета данные к любому объекту (запись, комментарий, пользователь).
Это базовая функция для управления метаданными. На ее основе работают все остальные функции метаполей. Также можно создать произвольную таблицу в БД и с её помощью записывать/удалять данные оттуда (см. ниже).
Родственные функции
update_metadata( $meta_type, $object_id, $meta_key, $meta_value, [$prev_value] ) // можно использовать вместо `add_metadata()`, // так как она сначала проверяет существование ключа.
delete_metadata( $meta_type, $object_id, $meta_key, [$meta_value], [$delete_all] ) // удаляет данные по ключу.
get_metadata( $meta_type, $object_id, [$meta_key], [$single] ) // получает данные из БД, по ключу.
Обязательно смотрите также: Метаданные в WordPress
Хуки из функции
Возвращает
int|false
.
- true - операция по добавлению поля прошла удачно
- false - поле добавить не удалось
Использование
add_metadata( $meta_type, $object_id, $meta_key, $meta_value, $unique );
- $meta_type(строка) (обязательный)
Тип объекта, мета данные для которого нужно добавить. Может быть:
comment
post
user
term
- $object_id(число) (обязательный)
- ID объекта, мета данные для которого добавляются.
- $meta_key(строка) (обязательный)
- Ключ - название типа дополнительных данных.
- $meta_value(строка) (обязательный)
- Значение ключа дополнительных данных.
- $unique(логический)
Определение уникальности ключа.
false
- означает, что для этого объекта может быть определено несколько одинаковых ключей.true
- значит, что ключ для этого объекта может быть только один, т.е. если такой ключ уже существует, то функция не добавит никаких данных.
По умолчанию: false
Примеры
#1 Пример создания дополнительных данных для комментария 45
add_metadata( 'comment', 45, 'vocation', 'Строитель', true );
#2 Создание произвольной таблицы метаданных
Создавать такие таблицы может понадобится разработчикам плагинов. Создание происходит на этапе активации плагина, через функцию register_activation_hook()
. Нужно понимать, что подобные таблицы могут создаваться и другими плагинами, поэтому делайте проверку на существование таковых.
Пример создания таблицы метаданных: term:
global $wpdb; $result = false; //Создаем таблицу в БД, если её не существует $sql = sprintf( 'CREATE TABLE IF NOT EXISTS `%stermmeta` ( meta_id bigint(20) UNSIGNED NOT NULL auto_increment, term_id bigint(20) UNSIGNED NOT NULL, meta_key varchar(255), meta_value longtext, PRIMARY KEY (meta_id) )', $wpdb->prefix ); $result = $wpdb->query( $sql );
Заметка! После того как таблица создана, её нужно зарегистрировать в объекте $wpdb, для того чтобы потом проще было с ней работать через класс $wpdb.
Для регистрации определите свойство класса $wpdb->termmeta
, в котором укажите название таблицы (делать это нужно как можно раньше - перед использованием произвольных функций):
global $wpdb; $wpdb->termmeta = $wpdb->prefix.'termmeta';
#3 Добавление данных в таблицу Term
Теперь, когда таблица создана, добавить данные туда можно так:
add_metadata( 'term', $_GET['tag_ID'], 'gender', 'M' ,true ); add_metadata( 'term', $_GET['tag_ID'], 'age', '29', true ); add_metadata( 'term', $_GET['tag_ID'], 'favourite_colour', 'Green', true );
Заметки
- Global. wpdb. $wpdb WordPress database abstraction object.
Список изменений
С версии 2.9.0 | Введена. |