WordPress Version: 6.3
/**
* Find the post ID for redirecting an old slug.
*
* @since 4.9.3
* @access private
*
* @see wp_old_slug_redirect()
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param string $post_type The current post type based on the query vars.
* @return int The Post ID.
*/
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'));
}
$key = md5($query);
$last_changed = wp_cache_get_last_changed('posts');
$cache_key = "find_post_by_old_slug:{$key}:{$last_changed}";
$cache = wp_cache_get($cache_key, 'post-queries');
if (false !== $cache) {
$id = $cache;
} else {
$id = (int) $wpdb->get_var($query);
wp_cache_set($cache_key, $id, 'post-queries');
}
return $id;
}