Функция WP_CHECKDATE() в WordPress
Функция wp_checkdate()
проверяет, является ли указанная дата валидной в григорианском календаре. Это полезная функция для работы с датами в ваших постах и других элементах WordPress.
Производительность
- 1 вызов — 0.00002 секунды (очень быстро)
- 50000 вызовов — 0.10 секунды (практически мгновенно)
Возврат значения
Функция возвращает:
true
— если дата валидна,false
— если дата не валидна.
Использование функции
Сигнатура функции
wp_checkdate( $month, $day, $year, $source_date );
Параметры:
$month
(int) (обязательный) — номер месяца.$day
(int) (обязательный) — номер дня.$year
(int) (обязательный) — номер года.$source_date
(string) (обязательный) — дата для проверки.
Примеры использования
Пример 1: Проверка валидности даты при создании нового поста
/*
* Если дата не задана (новый пост или черновик)
* если это не черновик или дата была изменена в процессе написания.
*/
if ( empty( $postarr['post_date'] ) || '0000-00-00 00:00:00' == $postarr['post_date'] ) {
$post_date = current_time( 'mysql' );
} else {
$post_date = $postarr['post_date'];
}
// Проверка валидности даты.
$mm = substr( $post_date, 5, 2 );
$jj = substr( $post_date, 8, 2 );
$aa = substr( $post_date, 0, 4 );
$valid_date = wp_checkdate( $mm, $jj, $aa, $post_date );
if ( ! $valid_date ) {
if ( $wp_error ) {
// Указанная дата некорректна.
return new WP_Error( 'invalid_date', __( 'Упс, указанная дата недействительна.' ) );
} else {
return 0;
}
}
Пример 2: Использование параметров запроса для проверки даты
if ( get_query_var( 'day' ) && get_query_var( 'monthnum' ) && get_query_var( 'year' ) ) {
$year = get_query_var( 'year' );
$month = get_query_var( 'monthnum' );
$day = get_query_var( 'day' );
$date = sprintf( '%04d-%02d-%02d', $year, $month, $day );
if ( ! wp_checkdate( $month, $day, $year, $date ) ) {
$redirect_url = get_month_link( $year, $month );
}
}
Изменения
С версии 3.5.0 — функция была введена.
Код функции
function wp_checkdate( $month, $day, $year, $source_date ) {
/**
* Фильтрует, является ли данная дата валидной для григорианского календаря.
*
* @since 3.5.0
*
* @param bool $checkdate Является ли указанная дата валидной.
* @param string $source_date Дата для проверки.
*/
return apply_filters( 'wp_checkdate', checkdate( $month, $day, $year ), $source_date );
}
Связанные функции
Вот несколько функций в WordPress, которые могут быть полезны при работе с датами и временем:
comment_date()
comment_time()
current_time()
date_i18n()
get_comment_date()
get_comment_time()
get_date_from_gmt()
get_gmt_from_date()
get_lastpostdate()
get_lastpostmodified()
get_post_time()
get_post_timestamp()
get_the_date()
get_the_modified_date()
get_the_modified_time()
get_the_time()
get_weekstartend()
mysql2date()
the_date()
the_time()
wp_date()
wp_maybe_decline_date()
wp_timezone()
wp_timezone_choice()
wp_timezone_string()
Теперь вы знаете, как использовать функцию wp_checkdate()
в WordPress для проверки валидности дат. Это поможет вам избежать ошибок при работе с записями и повысить надежность вашего сайта.