Функция ADD_METADATA() в WordPress: описание и примеры использования

# Функция ADD_METADATA() | WP 2.9.0

Функция add_metadata() позволяет добавлять метаданные к определенному объекту (например, посту, комментарию, пользователю и т. д.). Это базовая функция для управления метаданными, и все другие функции для работы с пользовательскими полями основываются на ней.

## Что такое метаданные?

Метаданные — это дополнительные данные, которые могут описывать или уточнять объекты в WordPress. Примером может быть информация о пользователе, дополнительные параметры поста или комментария.

## Связанные функции

Вместо add_metadata() вы также можете использовать:
- **update_metadata($meta_type, $object_id, $meta_key, $meta_value, [$prev_value])** — обновляет метаданные, если указанный ключ уже существует.
- **delete_metadata($meta_type, $object_id, $meta_key, [$meta_value], [$delete_all])** — удаляет метаданные по ключу.
- **get_metadata($meta_type, $object_id, [$meta_key], [$single])** — получает метаданные по ключу.

## Стандартные таблицы метаданных в WordPress

Для работы функции нужно наличие специальных таблиц в базе данных, в которые будут добавляться метаданные. По умолчанию в базе данных WordPress есть четыре таблицы для разных типов объектов:
- wp_commentmeta — метаданные комментариев.
- wp_postmeta — метаданные постов (здесь хранятся пользовательские поля поста).
- wp_usermeta — метаданные пользователей (дополнительная информация о пользователе).
- wp_termmeta — метаданные таксономии (дополнительные данные для элементов таксономии).

## Использование функции

Чтобы воспользоваться функцией add_metadata(), используйте следующий синтаксис:

```php
add_metadata($meta_type, $object_id, $meta_key, $meta_value, $unique);

Параметры функции:

  • $meta_type (string) (обязательный): тип объекта, к которому относятся метаданные. Возможные значения: 'post', 'comment', 'term', 'user' и т. д.
  • $object_id (int) (обязательный): ID объекта, к которому относятся метаданные.
  • $meta_key (string) (обязательный): ключ метаданных.
  • $meta_value (mixed) (обязательный): значение метаданных. Если значение не скалярное, оно должно быть сериализуемым.
  • $unique (true|false) (необязательный): определяет, должны ли метаданные для указанного ключа быть уникальными для объекта. Если true и объект уже имеет значение для указанного ключа, изменения не произойдут. По умолчанию: false.

Примеры использования

Пример 1: Создание таблицы для метаданных термина

Разработчики плагинов могут создать отдельные табли��ы для метаданных. Это нужно делать в момент активации плагина с помощью функции register_activation_hook().

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, чтобы упростить работу с ней.

global $wpdb;
$wpdb->termmeta = $wpdb->prefix . 'termmeta';

Пример 2: Добавление метаданных в таблицу термина

Теперь, когда таблица создана, вы можете добавлять данные, как показано ниже:

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);

Пример 3: Добавление метаданных к комментарию с ID 45

add_metadata('comment', 45, 'vocation', 'Builder', true);

Примечания

  • Глобальные переменные: Используйте объект $wpdb для взаимодействия с базой данных WordPress.

История изменений

  • С версии 2.9.0: Функция была введена в WordPress.

Заключение

Функция add_metadata() является важным инструментом для работы с метаданными в WordPress. Она позволяет добавлять, обновлять и удалять информацию, что помогает улучшать функциональность сайта и управление контентом.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *