В этой статье рассмотрим, как создать в WordPress пользовательское поле для записи, которое будет автоматически заполняться текущей датой при создании новой записи. Это полезно, если вы хотите фиксировать дату, например, для публикаций, событий или пользовательских данных, но при этом не хотите каждый раз вводить дату вручную.
Зачем нужно автозаполнение даты в пользовательских полях
В WordPress есть стандартное поле "Дата публикации", но часто требуется хранить дополнительную дату в метаполях, например:
- Дата начала события
- Дата последнего обновления
- Дата создания пользовательских данных
Если автозаполнять эти поля, уменьшается вероятность ошибки при вводе, а процесс создания записи ускоряется.
Рассмотрим, как это сделать программно и с помощью плагинов.
Создание автозаполняемого поля программно через хук save_post
Самый гибкий способ – подключить обработчик на сохранение записи, который проверит наличие значения в поле и, если оно пустое, установит текущую дату.
Пример кода для functions.php вашей темы или отдельного плагина:
function wpgen_set_auto_date_meta($post_id) {
// Проверяем, что это не автосохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// Проверяем права пользователя
if (!current_user_can('edit_post', $post_id)) {
return;
}
// Имя метаполя
$meta_key = 'wpgen_event_date';
// Получаем текущее значение
$current_value = get_post_meta($post_id, $meta_key, true);
// Если поле пустое, устанавливаем текущую дату
if (empty($current_value)) {
$current_date = date('Y-m-d');
update_post_meta($post_id, $meta_key, $current_date);
}
}
add_action('save_post', 'wpgen_set_auto_date_meta');Объяснение:
- Функция проверяет, не является ли сохранение автосохранением;
- Проверяет права пользователя на редактирование записи;
- Если метаполе пустое, ставит дату в формате
ГГГГ-ММ-ДД; - Используется хук
save_post, который вызывается при сохранении записи.
Добавление поля даты в редактор записи с автоматическим заполнением
Чтобы редактор записи показывал поле даты, добавим метабокс с полем ввода. При создании новой записи поле будет заполнено автоматически.
function wpgen_add_date_metabox() {
add_meta_box('wpgen_date_metabox', 'Дата события', 'wpgen_date_metabox_callback', null, 'side', 'default');
}
add_action('add_meta_boxes', 'wpgen_add_date_metabox');
function wpgen_date_metabox_callback($post) {
wp_nonce_field('wpgen_save_date_metabox', 'wpgen_date_metabox_nonce');
$value = get_post_meta($post->ID, 'wpgen_event_date', true);
if (empty($value) && $post->post_status === 'auto-draft') {
$value = date('Y-m-d');
}
echo '<input type="date" name="wpgen_event_date" value="' . esc_attr($value) . '" style="width:100%;">';
}
function wpgen_save_date_metabox($post_id) {
if (!isset($_POST['wpgen_date_metabox_nonce']) || !wp_verify_nonce($_POST['wpgen_date_metabox_nonce'], 'wpgen_save_date_metabox')) {
return;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (!current_user_can('edit_post', $post_id)) {
return;
}
if (isset($_POST['wpgen_event_date'])) {
$date = sanitize_text_field($_POST['wpgen_event_date']);
update_post_meta($post_id, 'wpgen_event_date', $date);
}
}
add_action('save_post', 'wpgen_save_date_metabox');В этом коде:
- Метабокс добавляется в сайдбар редактора записи;
- При создании новой записи (статус auto-draft) поле автоматически получает текущую дату;
- При сохранении записи значение из поля сохраняется в метаполе.
Использование плагина Clearfy Pro для управления метаполями и автозаполнением
Если вы предпочитаете готовые решения, плагин Clearfy Pro позволяет создавать и управлять пользовательскими метаполями, включая автоматическое заполнение значений.
В Clearfy Pro можно настроить правило автозаполнения поля с помощью пользовательского PHP-кода или встроенных условий без написания кода. Это удобно, если нужно быстро внедрить функционал без правок в тему.
Преимущества использования Clearfy Pro:
- Интуитивный интерфейс для создания и настройки метаполей;
- Встроенная поддержка автозаполнения и условий;
- Совместимость с популярными конструкторами и темами;
- Поддержка кеширования и оптимизация производительности.
Как вывести автозаполненную дату в шаблоне темы
Для отображения даты из метаполя на сайте используйте функцию get_post_meta. Пример кода для файла шаблона single.php или внутри цикла:
$event_date = get_post_meta(get_the_ID(), 'wpgen_event_date', true);
if ($event_date) {
echo '<p><strong>Дата события:</strong> ' . esc_html($event_date) . '</p>';
} else {
echo '<p>Дата не задана</p>';
}Если хотите вывести дату в более удобочитаемом формате, можно преобразовать её через PHP:
$date_obj = DateTime::createFromFormat('Y-m-d', $event_date);
if ($date_obj) {
echo '<p><strong>Дата события:</strong> ' . $date_obj->format('d.m.Y') . '</p>';
}Поддержка форматов даты и локализация
Формат даты Y-m-d — это стандарт для HTML-элемента input type="date" и для удобного хранения в базе.
Если хотите сделать поле более гибким и поддержать разные форматы, можно использовать jQuery UI Datepicker или сторонние JS-библиотеки. При этом в WordPress стоит учитывать локализацию — например, для русской локали лучше использовать формат d.m.Y.
Встроенный HTML5 элемент проще и быстрее, поддерживается большинством современных браузеров.
Итоговые рекомендации
Автоматическое заполнение даты в метаполях WordPress — простое, но очень полезное улучшение для удобства контента и администрирования. Основные шаги:
- Добавить метаполе и метабокс с полем даты;
- Сделать проверку и установку текущей даты при сохранении записи;
- Вывести дату в шаблоне с форматированием;
- При желании использовать плагин Clearfy Pro для удобного управления без кода.
Такой подход подойдет для сайтов с событиями, каталогами, журналами и любыми нестандартными типами записей.