_find_post_by_old_slug()
Функція ядра, яка отримує 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()
wp_old_slug_redirect()
1 раз – 0.000494 сек
(швидко) | 50000 разів – 17.66 сек
(повільно) |
PHP 7.2.5, WP 4.9.8
(швидко) | 50000 разів – 17.66 сек
(повільно) |
PHP 7.2.5, WP 4.9.8
Хуків немає.
Повертає
int
. ID запису.
Використання
_find_post_by_old_slug( $post_type );
-
$post_type
(рядок) (обов’язковий) - Поточний тип посту на основі змінних запитів.
Приклади
#1 Приклад із ядра WordPress
Дивіться код функції wp_old_slug_redirect() .
нотатки
- Дивіться: wp_old_slug_redirect()
- Global. wpdb. $wpdb WordPress database abstraction object.
список змін
З версії 4.9.3 | Введено. |
Код _find_post_by_old_slug() 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; }