Функция WP_CHECKDATE() в WordPress: Примеры использования и рекомендации

Функция 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 для проверки валидности дат. Это поможет вам избежать ошибок при работе с записями и повысить надежность вашего сайта.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *