WordPress Version: 6.3
/**
* Find the post ID for redirecting an old date.
*
* @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_date($post_type)
{
global $wpdb;
$date_query = '';
if (get_query_var('year')) {
$date_query .= $wpdb->prepare(' AND YEAR(pm_date.meta_value) = %d', get_query_var('year'));
}
if (get_query_var('monthnum')) {
$date_query .= $wpdb->prepare(' AND MONTH(pm_date.meta_value) = %d', get_query_var('monthnum'));
}
if (get_query_var('day')) {
$date_query .= $wpdb->prepare(' AND DAYOFMONTH(pm_date.meta_value) = %d', get_query_var('day'));
}
$id = 0;
if ($date_query) {
$query = $wpdb->prepare("SELECT post_id FROM {$wpdb->postmeta} AS pm_date, {$wpdb->posts} WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_date' AND post_name = %s" . $date_query, $post_type, get_query_var('name'));
$key = md5($query);
$last_changed = wp_cache_get_last_changed('posts');
$cache_key = "find_post_by_old_date:{$key}:{$last_changed}";
$cache = wp_cache_get($cache_key, 'post-queries');
if (false !== $cache) {
$id = $cache;
} else {
$id = (int) $wpdb->get_var($query);
if (!$id) {
// Check to see if an old slug matches the old date.
$id = (int) $wpdb->get_var($wpdb->prepare("SELECT ID FROM {$wpdb->posts}, {$wpdb->postmeta} AS pm_slug, {$wpdb->postmeta} AS pm_date WHERE ID = pm_slug.post_id AND ID = pm_date.post_id AND post_type = %s AND pm_slug.meta_key = '_wp_old_slug' AND pm_slug.meta_value = %s AND pm_date.meta_key = '_wp_old_date'" . $date_query, $post_type, get_query_var('name')));
}
wp_cache_set($cache_key, $id, 'post-queries');
}
}
return $id;
}