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 попереднього елемента таксономії, який був поділений.

Приклади

0

#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 );
}
0

#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 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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *