wp_get_split_terms()
Отримує дані про елементи таксономії, які були з однаковими 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 6.0.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; }