Как отображать выбор даты в WordPress с применением Advanced Custom Fields

Выбор даты — одна из часто используемых функций в различных проектах на WordPress, будь то события, бронирования или публикация с указанием конкретной даты. В этой статье мы подробно рассмотрим, как организовать выбор и отображение даты на сайте с помощью плагина Advanced Custom Fields (ACF). Это позволит сделать интерфейс удобным для пользователей и добавить гибкость в управление данными.

Что такое Advanced Custom Fields и почему он удобен для выбора даты

ACF — мощный плагин для создания метаполей в WordPress без необходимости писать сложный код. Он предоставляет множество типов полей, включая поле выбора даты, которое можно легко добавить к любому типу записи. Такой подход избавляет от необходимости создавать настраиваемые таблицы или сложные формы с нуля.

Поле выбора даты в ACF поддерживает различные форматы, календарь для удобного выбора и легко выводится в шаблонах. Это делает его идеальным решением для проектов, где требуется отображать даты с возможностью редактирования из админки.

Создание поля выбора даты в ACF: пошаговая инструкция

Для начала нужно установить и активировать плагин Advanced Custom Fields Pro, так как бесплатная версия тоже поддерживает поле «Дата», но Pro расширяет функционал.

  1. Перейдите в админ-панель WordPress, раздел Custom Fields (Пользовательские поля).
  2. Создайте новую группу полей, например, «Дата события».
  3. Добавьте новое поле с типом Date Picker (Выбор даты).
  4. Настройте формат даты. Например, для вывода «день.месяц.год» используйте d.m.Y. Можно также определить минимальную и максимальную дату, если нужно ограничить выбор.
  5. Укажите, к каким типам записей применять группу — например, к «Событиям» или «Записям».
  6. Сохраните группу полей.

Теперь при создании или редактировании записи будет доступен удобный календарь для выбора даты.

Вывод выбранной даты в шаблонах WordPress

Чтобы вывести дату, выбранную пользователем, используйте функцию get_field() из ACF. Однако нужно учитывать формат вывода и локализацию.

if ( function_exists('wpco_get_field') ) {
    $date = get_field('event_date'); // 'event_date' — ключ вашего поля
    if ($date) {
        // Форматируем дату для вывода
        echo date_i18n('j F Y', strtotime($date));
    } else {
        echo 'Дата не указана';
    }
}

В этом примере мы используем стандартную функцию PHP strtotime() для преобразования строки в дату и date_i18n() для локализации месяца и форматирования. Это особенно важно, если ваш сайт на русском или другом языке.

Создание вспомогательной функции для вывода даты (пример wpco_get_event_date)

Для удобства и переиспользования можно оформить вывод даты в отдельную функцию. Например:

function wpco_get_event_date($post_id = null) {
    if (!$post_id) {
        $post_id = get_the_ID();
    }
    $date = get_field('event_date', $post_id);
    if ($date) {
        return date_i18n('j F Y', strtotime($date));
    }
    return false;
}

Вызовите эту функцию в шаблоне:

echo wpco_get_event_date();

Дополнительные настройки и расширения для выбора даты

Ограничение выбора даты

В ACF можно ограничить выбор дат, например, чтобы пользователи не могли выбрать даты в прошлом для событий будущего. Для этого в настройках поля укажите минимальное значение, например, today или фиксированную дату.

Если нужна более сложная логика, например, запрет выбора выходных, можно использовать JavaScript-хуки ACF для кастомизации календаря.

Добавление времени к дате

Если требуется не только дата, но и время, ACF предлагает тип поля Date Time Picker, который позволяет выбрать дату и время в одном поле. Аналогично выводится через get_field() с последующим форматированием.

Пример вывода даты и времени события

$datetime = get_field('event_datetime');
if ($datetime) {
    echo date_i18n('j F Y H:i', strtotime($datetime));
}

Использование плагинов для расширения функционала выбора даты

Если нужно добавить динамические функции, например, автообновление даты или интеграцию с календарями, рассмотрите следующие полезные плагины:

  • Clearfy Pro — для оптимизации и управления метаполями.
  • WPStories — для создания сторис с указанием даты публикации.

Эти плагины помогут автоматизировать работу с датами и улучшить пользовательский опыт.

Обработка и валидация даты на стороне сервера

Важно не только вывести дату, но и гарантировать корректность данных при сохранении. Для этого используйте хук acf/validate_value для проверки поля даты.

add_filter('acf/validate_value/name=event_date', 'wpco_validate_event_date', 10, 4);
function wpco_validate_event_date($valid, $value, $field, $input) {
    if (!$valid) {
        return $valid;
    }
    $timestamp = strtotime($value);
    if ($timestamp === false) {
        return 'Некорректная дата';
    }
    // Пример: запретить даты в прошлом
    if ($timestamp < time()) {
        return 'Дата не может быть в прошлом';
    }
    return $valid;
}

Такой подход предотвращает ошибки и позволяет заранее информировать пользователя о неправильном формате или запрещенной дате.

Вывод даты в формате JSON-LD для SEO

Если дата события важна для SEO, например, для разметки событий, добавьте вывод в формате JSON-LD. Это улучшит видимость в поисковых системах.

$event_date = wpco_get_event_date();
if ($event_date) {
    $date_iso = get_field('event_date'); // предполагается формат Y-m-d
    echo '<script type="application/ld+json">' . json_encode([
        '@context' => 'https://schema.org',
        '@type' => 'Event',
        'startDate' => $date_iso
    ]) . '</script>';
}

Поддержка структурированных данных поможет поисковикам лучше понять контент вашего сайта.

Как установить ограничения на размер файлов в WordPress
30.01.2026
Как использовать REST API для создания кастомных эндпойнтов в WordPress
08.12.2025
Как создать автозагрузку изображений в WordPress
17.11.2025
Как создать автоматическую публикацию постов из внешнего источника в WordPress
08.04.2026
Как создать уникальный файл robots.txt в WordPress для улучшения индексации
17.02.2026