В этой статье разберём, как автоматически заполнять метаданные (custom fields) для постов в WordPress, чтобы упростить работу с контентом и повысить эффективность управления сайтом. Автоматизация особенно полезна при большом количестве публикаций, когда вручную добавлять метаданные неудобно и долго.
Что такое метаданные поста и зачем их автозаполнять
Метаданные — это дополнительная информация о записи, которая хранится в базе данных отдельно от основного содержимого. Они позволяют расширять функциональность сайта — например, указывать цену товара, дату события, рейтинг и т.д.
Автоматическое заполнение метаданных полезно, когда эти данные могут быть вычислены или получены из других источников без участия пользователя. Это снижает вероятность ошибок и экономит время.
Рассмотрим пример: если у вас блог с обзорами фильмов, можно автоматически сохранять в метаданных рейтинг по данным с API кинопортала, или дату публикации в формате timestamp.
Как реализовать автозаполнение метаданных с помощью хука save_post
Для автоматического добавления или обновления метаданных при сохранении записи используется хук save_post. Он вызывается каждый раз, когда вы сохраняете или обновляете пост.
Ниже пример функции, которая добавляет или обновляет метаполе wpbox_auto_meta с текущей датой и временем публикации:
function wpbox_autofill_meta_on_save($post_id) {
// Проверяем, что это не авто-сохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
// Проверяем права пользователя
if (!current_user_can('edit_post', $post_id)) {
return;
}
// Получаем дату публикации
$post = get_post($post_id);
if (!$post) return;
$publish_date = $post->post_date;
// Добавляем или обновляем метаданные
update_post_meta($post_id, 'wpbox_auto_meta', $publish_date);
}
add_action('save_post', 'wpbox_autofill_meta_on_save');
Эта функция автоматически записывает в метаполе дату публикации при сохранении поста. Аналогично можно добавить любой другой логический блок для заполнения нужных полей.
Пример автозаполнения метаданных с использованием API внешнего сервиса
Допустим, нужно автоматически подтягивать и сохранять рейтинг фильма из внешнего API при сохранении поста типа movie_review. Ниже пример упрощённой реализации:
function wpbox_fill_rating_from_api($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
$post = get_post($post_id);
if ($post->post_type !== 'movie_review') return;
$title = $post->post_title;
// Запрос к выдуманному API, где в ответе JSON с рейтингом
$response = wp_remote_get('https://example-movie-api.com/rating?title=' . urlencode($title));
if (is_wp_error($response)) return;
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (empty($data['rating'])) return;
update_post_meta($post_id, 'wpbox_movie_rating', floatval($data['rating']));
}
add_action('save_post', 'wpbox_fill_rating_from_api');
Такой подход позволяет поддерживать актуальные данные в метаданных без ручного ввода.
Использование плагинов для автоматизации метаданных
Если вручную писать код неудобно, существуют плагины, которые упрощают задачу:
- Advanced Custom Fields (ACF) — позволяет создавать удобные поля и использовать хуки для автозаполнения.
- WP All Import — импортирует данные из CSV/XML с автозаполнением метаданных.
- Clearfy Pro — оптимизирует процессы WordPress, в том числе работу с метаданными.
Например, в ACF можно добавить поле и использовать PHP-фильтр acf/update_value для автоматического изменения значения перед сохранением.
Рекомендации по безопасности и производительности
При автозаполнении важно учитывать:
- Используйте проверки nonce и права доступа, чтобы избежать несанкционированных изменений.
- Избегайте тяжелых запросов к внешним API в хук
save_post, лучше запускать такие задачи в фоне через WP Cron. - Кэшируйте результаты запросов, чтобы снизить нагрузку.
Такой подход поможет сделать работу сайта стабильной и безопасной.
Итог
Автоматическое заполнение метаданных в WordPress — мощный инструмент для оптимизации управлением контентом. Используя хук save_post, API WordPress и сторонние сервисы, можно создавать гибкие решения, которые экономят время и уменьшают ошибки.
Для расширения функционала рекомендуем ознакомиться с плагинами Clearfy Pro и Advanced Custom Fields — они существенно упрощают работу с метаданными и автоматизацией.