wp_get_split_terms() WP 4.2.0
Получает данные об элементах таксономии, которые были с одинаковыми ID и были разделены с версии WP 4.2.
В ранних версиях (ниже 4.2). Элементы таксономии в таблице wp_terms
записывались так, что если 2 элемента разных таксономий имеют одинаковые названия, то они просто прикреплялись к одной записи таблицы, т.е. оба элемента имели один ID.
С версии WP 4.2 такие элементы разделяются и каждый элемент таксономии будет иметь свой уникальный ID, даже если 2 элемента разных таксономий имеют одинаковые названия и ярлыки.
Эта функция для тех случаев, когда нужно получить данные о таком разделении, уже после того как разделение произошло.
Хуков нет.
Возвращает
Массив. Массив новых ID, ключ которых - название таксономии.
Использование
wp_get_split_terms( $old_term_id );
- $old_term_id(число) (обязательный)
- ID предыдущего элемента таксономии, который был разделен.
Примеры
#1 Исправляем ID элементов таксономии в опции 'featured_tags' после разделения
Рекомендуемый метод исправления это хук split_shared_term
. Однако, когда плагин обновился после разделения, прицепиться к этому хуку уже невозможно. В этом случае поможет wp_get_split_terms(), которая хранит информацию о разделении.
Предположим плагин хранил ID терминов в опции featured_tags
. Нам нужно убедиться что ни один из терминов сохраненных в featured_tags не был разделен, а если был, то нужно обновить ID в этой опции.
function featured_tags_check_for_split_terms() { $featured_tag_ids = get_option( 'featured_tags', array() ); // Проверим есть ли ID терминов из таксономии `post_tag`, которые были разделены foreach ( $featured_tag_ids as $index => $featured_tag_id ) { $split_terms = wp_get_split_terms( $featured_tag_id, 'post_tag' ); if ( ! empty( $split_terms ) ) { foreach ( $split_terms as $split_term ) { // Заменяем старые ID новыми $featured_tag_ids[ $index ] = $split_term['post_tag']; } } } // Обновляем update_option( 'featured_tags', $featured_tag_ids ); }
#2 Проверим были ли разделены элементы таксономии на сайте
Чтобы проверить было ли разделение элементов таксономии вообще, запустите такой код, поместив его functions.php:
$split_terms = get_option( '_split_terms', array() ); wp_die( '<pre>'. print_r( $split_terms, 1 ) .'</pre>' ); /* выведет: Array ( [3] => Array ( [post_tag] => 591 ) [18] => Array ( [post_tag] => 592 ) ) */
Если результат выведет array()
, то разделения не было и опцию можно удалить без последствий:
delete_option('_split_terms');
Список изменений
С версии 4.2.0 | Введена. |
Код wp_get_split_terms() wp get split terms WP 5.6.2
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;
}