# WP_GET_SPLIT_TERMS() │ WP 4.2.0
Функция wp_get_split_terms() позволяет получить информацию о терминах, которые ранее имели один идентификатор (term_id), но затем были разделены на несколько.
## Хуки
Эта функция не использует хуки.
## Возврат значения
Функция возвращает массив, содержащий новые идентификаторы терминов, упорядоченные по таксономиям.
## Использование
```php
wp_get_split_terms( $old_term_id );
Параметры
- $old_term_id (int, обязательный): Идентификатор термина, который был до разделения.
Примеры использования
Пример #1: Исправление идентификаторов терминов в опции 'featured_tags'
Рекомендуемый способ исправления — использовать хук split_shared_term. Однако, если плагин обновляется после разделения, этот хук больше не будет применим. В таком случае поможет функция wp_get_split_terms(), которая хранит информацию о разделении.
Предположим, что плагин хранил идентификаторы терминов в опции featured_tags. Нам нужно убедиться, что ни один из терминов в featured_tags не был разделён, и если это так, обновить их идентификаторы.
function featured_tags_check_for_split_terms() {
$featured_tag_ids = get_option( 'featured_tags', array() );
// Проверяем, есть ли термины из таксономии post_tag, которые были разделены
foreach ( $featured_tag_ids as $index => $featured_tag_id ) {
$split_terms = wp_get_split_terms( $featured_tag_id );
if ( ! empty( $split_terms ) ) {
foreach ( $split_terms as $split_term ) {
// Замена старых идентификаторов на новые
$featured_tag_ids[ $index ] = $split_term['post_tag'];
}
}
}
// Обновляем опцию
update_option( 'featured_tags', $featured_tag_ids );
}
Пример #2: Проверка данных о разделении элементов таксономии
Чтобы проверить, произошла ли вообще операция разделения, выполните следующий код:
$split_terms = get_option( '_split_terms', [] );
if( $split_terms ){
// Разделение произошло, и есть данные о разделении
} else {
// Данных о разделении нет (но код разделения скорее всего сработал)
// Возможно, у вас просто не оказалось терминов с одинаковыми ID
}
print_r( $split_terms );
Ниже представлено, как может выглядеть вывод:
Array
(
[3] => Array
(
[post_tag] => 591
)
[18] => Array
(
[post_tag] => 592
)
)
Если array() не выводит результат, это означает, что у вас не было терминов с одинаковыми идентификаторами после разделения, и опцию можно удалить без последствий:
delete_option( '_split_terms' );
Изменения
Функция была внедрена в в��рсии 4.2.0.
Код функции wp_get_split_terms()
Функция определена в файле wp-includes/taxonomy.php:
function wp_get_split_terms( $old_term_id ) {
$split_terms = get_option( '_split_terms', array() );
$terms = array();
if ( isset( $split_terms[ $old_term_id ] ) ) {
$terms = $split_terms[ $old_term_id ];
}
return $terms;
}
Связанные функции
Таксономии (категории, метки)
- _update_post_term_count()
- get_ancestors()
- get_term_parents_list()
- WP_Tax_Query()
- wp_terms_checklist()
Эти функции помогают управлять таксономиями и термином в WordPress более эффективно.