wp_set_object_terms()

Создает отношения между термином и таксономией
Функция WordPress
INT 2.3.0
WordPress Icon
Содержание
  1. Описание функции
  2. Примеры использования
  3. Создание связи между объектом и терминами
  4. Добавление новых терминов к объекту
  5. Замена существующих терминов у объекта
  6. Удаление всех связанных терминов у объекта
  7. Добавление нескольких терминов к объекту
  8. Удаление разницы терминов у объекта
  9. Вопросы и ответы
  10. Как добавить новые термины в таксономию с помощью функции wp_set_object_terms()?
  11. Как заменить все существующие связи терминов в таксономии с помощью функции wp_set_object_terms()?
  12. Как удалить все связи терминов в таксономии с помощью функции wp_set_object_terms()?
  13. Как добавить новые термины вместе с существующими связями терминов в таксономии с помощью функции wp_set_object_terms()?
  14. Как обработать ошибку при использовании функции wp_set_object_terms()?
  15. Как получить идентификаторы таксономий, к которым относятся термины с помощью функции wp_set_object_terms()?
  16. Как обновить связи терминов в таксономии с помощью функции wp_set_object_terms()?
  17. Как удалить только определенные связи терминов в таксономии с помощью функции wp_set_object_terms()?
  18. Связанные элементы

Описание функции

Функция wp_set_object_terms() создает связи между терминами и таксономиями. Она позволяет привязать один или несколько терминов к определенному объекту, такому как запись, пользователь или термин.

Функция заменяет все существующие связи между объектом и таксономией новыми связями, указанными в параметрах. Если параметр $append установлен в значение true, то новые связи будут добавлены к уже существующим, а не заменены.

Использование

wp_set_object_terms( int $object_id, string|int|array $terms, string $taxonomy, bool $append = false ): array|WP_Error

Функция wp_set_object_terms() принимает следующие параметры:

  • $object_id (обязательный): Идентификатор объекта, к которому нужно привязать термины.
  • $terms (обязательный): Строка, целое число или массив, содержащий слаги или идентификаторы терминов. Если передан пустой массив, то все связи между объектом и таксономией будут удалены.
  • $taxonomy (обязательный): Контекст, в котором нужно установить связь между терминами и объектом.
  • $append (необязательный): Если установлен в значение false, то будут удалены все термины, которые не указаны в параметре $terms. По умолчанию установлено значение false.

Функция wp_set_object_terms() возвращает массив идентификаторов таксономий, к которым были привязаны термины, или объект WP_Error в случае ошибки.

<?php
$object_id = 123; // Идентификатор объекта
$terms = array( 'term1', 'term2' ); // Список терминов
$taxonomy = 'category'; // Таксономия
$append = false; // Заменить существующие термины
$result = wp_set_object_terms( $object_id, $terms, $taxonomy, $append );
if ( ! is_wp_error( $result ) ) {
  echo 'Термины успешно привязаны к объекту.';
} else {
  echo 'Произошла ошибка при привязке терминов к объекту: ' . $result->get_error_message();
}
?>

В приведенном выше примере кода мы используем функцию wp_set_object_terms() для привязки терминов ‘term1’ и ‘term2’ к объекту с идентификатором 123 в таксономии ‘category’. Параметр $append установлен в значение false, поэтому все существующие связи между объектом и таксономией будут заменены новыми связями. Если привязка прошла успешно, будет выведено сообщение «Термины успешно привязаны к объекту». В случае ошибки, будет выведено сообщение с текстом ошибки.

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

Создание связи между объектом и терминами


/**
 * Создание связи между объектом и терминами.
 *
 * @param int    $object_id ID объекта, с которым связываются термины.
 * @param string $terms     Слаг одного термина, ID одного термина или массив слагов или ID терминов.
 * @param string $taxonomy  Контекст, в котором связывается термин с объектом.
 * @param bool   $append    Опционально. Если false, то будут удалены все предыдущие связанные термины. По умолчанию: false.
 * @return array|WP_Error   Массив ID таксономий связанных терминов или WP_Error в случае ошибки.
 */
wp_set_object_terms( $object_id, $terms, $taxonomy, $append );

Добавление новых терминов к объекту


/**
 * Добавление новых терминов к объекту.
 *
 * @param int    $object_id ID объекта, к которому добавляются термины.
 * @param string $terms     Слаг одного термина, ID одного термина или массив слагов или ID терминов.
 * @param string $taxonomy  Контекст, в котором связывается термин с объектом.
 * @param bool   $append    Опционально. Если false, то будут удалены все предыдущие связанные термины. По умолчанию: false.
 * @return array|WP_Error   Массив ID таксономий связанных терминов или WP_Error в случае ошибки.
 */
wp_set_object_terms( $object_id, $terms, $taxonomy, true );

Замена существующих терминов у объекта


/**
 * Замена существующих терминов у объекта.
 *
 * @param int    $object_id ID объекта, у которого заменяются термины.
 * @param string $terms     Слаг одного термина, ID одного термина или массив слагов или ID терминов.
 * @param string $taxonomy  Контекст, в котором связывается термин с объектом.
 * @param bool   $append    Опционально. Если false, то будут удалены все предыдущие связанные термины. По умолчанию: false.
 * @return array|WP_Error   Массив ID таксономий связанных терминов или WP_Error в случае ошибки.
 */
wp_set_object_terms( $object_id, $terms, $taxonomy, false );

Удаление всех связанных терминов у объекта


/**
 * Удаление всех связанных терминов у объекта.
 *
 * @param int    $object_id ID объекта, у которого удаляются термины.
 * @param string $terms     Пустой массив.
 * @param string $taxonomy  Контекст, в котором связывается термин с объектом.
 * @param bool   $append    Опционально. Если false, то будут удалены все предыдущие связанные термины. По умолчанию: false.
 * @return array|WP_Error   Массив ID таксономий связанных терминов или WP_Error в случае ошибки.
 */
wp_set_object_terms( $object_id, array(), $taxonomy, false );

Добавление нескольких терминов к объекту


/**
 * Добавление нескольких терминов к объекту.
 *
 * @param int    $object_id ID объекта, к которому добавляются термины.
 * @param array  $terms     Массив слагов или ID терминов.
 * @param string $taxonomy  Контекст, в котором связывается термин с объектом.
 * @param bool   $append    Опционально. Если false, то будут удалены все предыдущие связанные термины. По умолчанию: false.
 * @return array|WP_Error   Массив ID таксономий связанных терминов или WP_Error в случае ошибки.
 */
wp_set_object_terms( $object_id, array( 'term1', 'term2', 'term3' ), $taxonomy, true );

Удаление разницы терминов у объекта


/**
 * Удаление разницы терминов у объекта.
 *
 * @param int    $object_id ID объекта, у которого удаляется разница терминов.
 * @param array  $terms     Массив слагов или ID терминов.
 * @param string $taxonomy  Контекст, в котором связывается термин с объектом.
 * @param bool   $append    Опционально. Если false, то будут удалены все предыдущие связанные термины. По умолчанию: false.
 * @return array|WP_Error   Массив ID таксономий связанных терминов или WP_Error в случае ошибки.
 */
wp_set_object_terms( $object_id, array( 'term1', 'term2' ), $taxonomy, false );

Вопросы и ответы

Как добавить новые термины в таксономию с помощью функции wp_set_object_terms()?

Для добавления новых терминов в таксономию с помощью функции wp_set_object_terms() необходимо передать следующие параметры:

  • $object_id — идентификатор объекта, с которым связываются термины.
  • $terms — новые термины, которые нужно добавить. Может быть строкой, числом или массивом строк/чисел.
  • $taxonomy — контекст, в котором связывается термин с объектом.
  • $append — необязательный параметр, указывающий, нужно ли заменить все существующие связи терминов в таксономии (по умолчанию false).

Пример кода:


$object_id = 123;
$terms = 'new-term';
$taxonomy = 'my_taxonomy';
wp_set_object_terms( $object_id, $terms, $taxonomy );

Как заменить все существующие связи терминов в таксономии с помощью функции wp_set_object_terms()?

Для замены всех существующих связей терминов в таксономии с помощью функции wp_set_object_terms() необходимо передать параметр $append со значением false.

Пример кода:


$object_id = 123;
$terms = 'new-term';
$taxonomy = 'my_taxonomy';
$append = false;
wp_set_object_terms( $object_id, $terms, $taxonomy, $append );

Как удалить все связи терминов в таксономии с помощью функции wp_set_object_terms()?

Для удаления всех связей терминов в таксономии с помощью функции wp_set_object_terms() необходимо передать пустой массив в качестве значения параметра $terms.

Пример кода:


$object_id = 123;
$terms = array();
$taxonomy = 'my_taxonomy';
wp_set_object_terms( $object_id, $terms, $taxonomy );

Как добавить новые термины вместе с существующими связями терминов в таксономии с помощью функции wp_set_object_terms()?

Для добавления новых терминов вместе с существующими связями терминов в таксономии с помощью функции wp_set_object_terms() необходимо передать параметр $append со значением true.

Пример кода:


$object_id = 123;
$terms = array( 'new-term1', 'new-term2' );
$taxonomy = 'my_taxonomy';
$append = true;
wp_set_object_terms( $object_id, $terms, $taxonomy, $append );

Как обработать ошибку при использовании функции wp_set_object_terms()?

При использовании функции wp_set_object_terms() может возникнуть ошибка, которую необходимо обработать. Для этого можно использовать конструкцию try-catch, чтобы перехватить и обработать исключение WP_Error.


try {
    // Вызов функции wp_set_object_terms()
    wp_set_object_terms( $object_id, $terms, $taxonomy );
} catch ( WP_Error $e ) {
    // Обработка ошибки
    echo 'Произошла ошибка: ' . $e->get_error_message();
}

Как получить идентификаторы таксономий, к которым относятся термины с помощью функции wp_set_object_terms()?

Функция wp_set_object_terms() возвращает массив идентификаторов таксономий, к которым относятся термины. Для получения этого массива можно сохранить результат функции в переменную и использовать ее далее.


// Вызов функции wp_set_object_terms() и сохранение результата
$term_taxonomy_ids = wp_set_object_terms( $object_id, $terms, $taxonomy );
// Использование массива идентификаторов таксономий
foreach ( $term_taxonomy_ids as $term_taxonomy_id ) {
    echo 'Идентификатор таксономии: ' . $term_taxonomy_id;
}

Как обновить связи терминов в таксономии с помощью функции wp_set_object_terms()?

Функция wp_set_object_terms() позволяет обновить связи терминов в таксономии. Для этого необходимо передать новые термины в качестве параметра $terms. Все существующие связи будут заменены новыми.


// Новые термины
$new_terms = array( 'term1', 'term2', 'term3' );
// Вызов функции wp_set_object_terms() с новыми терминами
wp_set_object_terms( $object_id, $new_terms, $taxonomy );

Как удалить только определенные связи терминов в таксономии с помощью функции wp_set_object_terms()?

Для удаления только определенных связей терминов в таксономии с помощью функции wp_set_object_terms() необходимо передать пустой массив в качестве параметра $terms. Это удалит все связи терминов в данной таксономии.


// Пустой массив
$empty_terms = array();
// Вызов функции wp_set_object_terms() с пустым массивом
wp_set_object_terms( $object_id, $empty_terms, $taxonomy );

Функция wp_set_object_terms() позволяет создавать связи между объектами и терминами в таксономиях WordPress. Она также предоставляет возможность обновлять и удалять связи терминов. При использовании функции необходимо обрабатывать возможные ошибки с помощью конструкции try-catch и использовать возвращаемые значения для дальнейшей обработки данных.

Связанные элементы

  • Функция wp_insert_term(): создает новый термин и связывает его с указанной таксономией.
  • Функция wp_delete_term(): удаляет термин и все его связи с объектами.
  • Функция wp_update_term(): обновляет информацию о существующем термине.
  • Функция wp_get_object_terms(): возвращает список терминов, связанных с указанным объектом.
  • Функция wp_remove_object_terms(): удаляет связи между указанным объектом и терминами.
  • Хук created_term: вызывается после создания нового термина.
  • Хук delete_term: вызывается перед удалением термина.
  • Хук edited_term: вызывается после обновления информации о термине.
  • Хук get_terms: позволяет изменить результат запроса терминов.
  • Класс WP_Term_Query: используется для выполнения запросов к терминам.
Обсуждение