_find_post_by_old_date() WP 4.9.3
Find the post ID for redirecting an old date.
Эта функция считается внутренней для использования самим ядром. Не рекомендуется использовать эту функцию в своем коде.
Хуков нет.
Возвращает
Число
. The Post ID.
Использование
_find_post_by_old_date( $post_type );
- $post_type(строка) (обязательный)
- The current post type based on the query vars.
Заметки
- Смотрите: wp_old_slug_redirect()
- Global. wpdb. $wpdb WordPress database abstraction object.
Список изменений
С версии 4.9.3 | Введена. |
Код _find_post_by_old_date() find post by old date WP 5.7.1
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 ) {
$id = (int) $wpdb->get_var( $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' ) ) );
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' ) ) );
}
}
return $id;
}