WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com

_find_post_by_old_slug() WP 4.9.3

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

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

Алгоритм работы функции _find_post_by_old_slug():

  • Создает основу для 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

Хуков нет.

Возвращает

Число. ID записи.

Использование

_find_post_by_old_slug( $post_type );
$post_type(строка) (обязательный)
Текущий тип поста на основе переменных запроса.

Код _find_post_by_old_slug: wp-includes/query.php VER 5.0.1

<?php
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_var( '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;
}
campusboy 3081youtube.com/c/wpplus
Создатель YouTube канала wp-plus, на котором делюсь своим опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.
Редакторы: Kama 7144
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться