_find_post_by_old_slug() WP 4.9.3

Функція ядра, яка отримує ID запис для перенаправлення зі старого url на новий.

Використовується у функції wp_old_slug_redirect() , яка здійснює перенаправлення, якщо ID запису було знайдено.

Алгоритм роботи:

  • Створює основу для SQL запиту, щоб знайти ID запису за переданим типом посту та вказаним значенням у метаполі з ключем _wp_old_slugрівне get_query_var('name').

  • Вносить у запит уточнення на основі get_query_var('year'), get_query_var('monthnum'), get_query_var('day'), якщо в записі ЧПУ використовується рік, місяць, день публікації.

  • За допомогою $wpdb->get_var() робить запит та повертає ID запису.

Ця функція вважається внутрішньою для використання самим ядром . Не рекомендується використовувати цю функцію у своєму коді.

Основа для:
wp_old_slug_redirect()
1 раз – 0.000494 сек
(швидко) | 50000 разів – 17.66 сек
(повільно) |
PHP 7.2.5, WP 4.9.8

Хуків немає.

Повертає

int. ID запису.

Використання

_find_post_by_old_slug( $post_type );
$post_type
(рядок) (обов’язковий)
Поточний тип посту на основі змінних запитів.

Приклади

0

#1 Приклад із ядра WordPress

Дивіться код функції wp_old_slug_redirect() .

нотатки

список змін

З версії 4.9.3Введено.

Код _find_post_by_old_slug() WP 6.0.2

function _find_post_by_old_slug( $post_type ) {
	Global $wpdb;

	$query = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_slug' AND meta_value = %s", $post_type, get_query ( 'name'));

	// If year, monthnum, or day have been specified, make our query more precise
	// Just in case there are multiple identical _wp_old_slug values.
	if ( get_query_var( 'year' ) ) {
		$query .= $wpdb->prepare( ' AND YEAR(post_date) = %d', get_query_var( 'year' ) );
	}
	if (get_query_var('monthnum')) {
		$query .= $wpdb->prepare( 'AND MONTH(post_date) = %d', get_query_var( 'monthnum' ) );
	}
	if ( get_query_var( 'day' ) ) {
		$query .= $wpdb->prepare( 'AND DAYOFMONTH(post_date) = %d', get_query_var( 'day' ) );
	}

	$id = (int) $wpdb->get_var( $query );

	return $id;
}

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

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