Уникальные метаполя (custom fields) в WordPress позволяют расширить стандартные возможности записи, добавляя свои дополнительные данные, которые можно использовать для различных целей: от SEO и маркетинга до кастомизации отображения контента. В этой статье подробно разберём, как создавать и использовать уникальные метаполя, как хранить и выводить их, а также рассмотрим примеры кода и полезные плагины.
Что такое уникальные метаполя и зачем они нужны в WordPress
Метаполя — это дополнительная информация о записи, хранящаяся в базе данных как пары «ключ-значение». WordPress из коробки поддерживает метаполя, но часто требуются уникальные, специально созданные для конкретных задач.
Например, для сайта yelly.ru можно добавить метаполя с рейтингом статьи, автором обзора, датой проведения тестирования и пр. Это позволит гибко управлять контентом и создавать кастомные шаблоны вывода.
Уникальные метаполя решают следующие задачи:
- Добавление структурированных данных для SEO;
- Создание пользовательских фильтров и сортировки;
- Показ дополнительной информации на фронтенде;
- Интеграция с внешними сервисами;
- Автоматизация и персонализация контента.
Как создать уникальные метаполя вручную: добавление через код
Для начала рассмотрим способ создания метаполей без плагинов, напрямую через код в файле темы functions.php или в собственном плагине. Такой подход даёт полный контроль и минимизирует нагрузку.
Регистрация метабокса для ввода метаполя в админке
Добавим метабокс с полем "Рейтинг статьи" (rating) к записям:
function yelly_add_custom_meta_box() {
add_meta_box(
'yelly_rating_meta',
'Рейтинг статьи',
'yelly_render_rating_meta_box',
'post',
'side',
'default'
);
}
add_action('add_meta_boxes', 'yelly_add_custom_meta_box');
function yelly_render_rating_meta_box($post) {
wp_nonce_field('yelly_save_rating_meta', 'yelly_rating_nonce');
$value = get_post_meta($post->ID, '_yelly_rating', true);
echo '<label for="yelly_rating_field">Введите рейтинг (1-5): </label>';
echo '<input type="number" id="yelly_rating_field" name="yelly_rating_field" value="' . esc_attr($value) . '" min="1" max="5" />';
}
Сохранение значения метаполя
Добавим проверку и сохранение введённого значения:
function yelly_save_rating_meta($post_id) {
if (!isset($_POST['yelly_rating_nonce'])) return;
if (!wp_verify_nonce($_POST['yelly_rating_nonce'], 'yelly_save_rating_meta')) return;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
if (isset($_POST['yelly_rating_field'])) {
$rating = intval($_POST['yelly_rating_field']);
if ($rating >= 1 && $rating <= 5) {
update_post_meta($post_id, '_yelly_rating', $rating);
} else {
delete_post_meta($post_id, '_yelly_rating');
}
}
}
add_action('save_post', 'yelly_save_rating_meta');
Вывод уникальных метаполей на сайте
Чтобы вывести рейтинг на странице записи, достаточно использовать функцию:
function yelly_display_rating() {
global $post;
$rating = get_post_meta($post->ID, '_yelly_rating', true);
if ($rating) {
echo '<div class="yelly-rating">Рейтинг статьи: ' . esc_html($rating) . ' / 5</div>';
}
}
Вы можете вызвать yelly_display_rating() в файле шаблона single.php или использовать через хук the_content для автоматической вставки.
Использование плагинов для создания и управления уникальными метаполями
Если не хочется писать код, можно использовать плагины. Рассмотрим самые популярные и удобные:
- Advanced Custom Fields (ACF) — простой интерфейс для добавления любых метаполей, включая повторяющиеся, условные и сложные. Есть бесплатная и PRO версии.
- Meta Box — мощный инструмент с большими возможностями кастомизации и поддержкой типов данных.
- Pods — позволяет создавать не только метаполя, но и кастомные типы записей и таксономии.
К примеру, с ACF можно создать поле "Рейтинг" с типом "число" и задать диапазон 1-5, а затем вывести его в теме с помощью:
if (function_exists('get_field')) {
$rating = get_field('rating');
if ($rating) {
echo '<div class="yelly-rating">Рейтинг статьи: ' . esc_html($rating) . ' / 5</div>';
}
}
Для быстрого старта ACF — отличный выбор, а для более сложных проектов — Meta Box или Pods.
Оптимизация и безопасность работы с метаполями
При работе с метаполями важно:
- Использовать nonce-поля и проверки прав доступа для защиты сохранения данных;
- Сохранять данные с валидацией и очисткой, избегая XSS и SQL-инъекций;
- Кешировать метаданные при большом количестве запросов для производительности;
- Использовать префиксы в ключах метаполей, например,
_yelly_rating, чтобы избежать конфликтов с плагинами и темами.
Пример комплексного использования уникальных метаполей для фильтрации записей
Предположим, вы хотите вывести список статей с рейтингом выше 3. Для этого создадим WP_Query с параметром метаполя:
$args = [
'post_type' => 'post',
'meta_query' => [
[
'key' => '_yelly_rating',
'value' => 3,
'compare' => '>',
'type' => 'NUMERIC'
]
]
];
$query = new WP_Query($args);
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
yelly_display_rating();
}
wp_reset_postdata();
} else {
echo 'Нет статей с рейтингом выше 3';
}
Это позволяет создавать кастомные каталоги, обзоры и многое другое.
Заключение
Уникальные метаполя — мощный инструмент для расширения функционала WordPress. Их можно создавать вручную через код или с помощью плагинов, что позволяет гибко настраивать контент под задачи проекта. Важно соблюдать безопасность и оптимизацию при работе с метаполями, чтобы сайт работал быстро и надёжно.
Для быстрого добавления и управления метаполями рекомендуем обратить внимание на Advanced Custom Fields с удобным интерфейсом и широкой функциональностью.