Локализация сайта на WordPress часто требует не только перевода стандартных элементов интерфейса, но и добавления уникальных метаданных, которые помогают управлять контентом на разных языках или регионах. В этой статье мы подробно рассмотрим, как добавить и использовать уникальные метаданные в WordPress для локализации, какие плагины могут помочь, а также приведём примеры кода для работы с этими метаданными.
Зачем нужны уникальные метаданные для локализации WordPress
Большинство сайтов используют плагины для многоязычности, такие как WPML или Polylang. Однако иногда возникает задача хранить уникальные данные, связанные с определённым языком или регионом, которые не поддерживаются стандартными средствами. Это могут быть, например, специфические SEO-метатеги, дополнительные описания, локализованные настройки или данные для кастомных функций.
Уникальные метаданные помогают:
- Хранить дополнительные локализованные сведения для постов, страниц или кастомных типов записей.
- Создавать условия для вывода контента в зависимости от языка или региона.
- Оптимизировать SEO под разные языковые версии сайта.
- Избегать дублирования контента и конфликтов между языковыми версиями.
Без правильной организации таких данных сложно масштабировать многоязычный проект и поддерживать его эффективность.
Как создать и добавить уникальные метаданные в WordPress
Использование функций add_post_meta и update_post_meta
Самый простой способ добавить уникальные метаданные к записи — использовать стандартные функции WordPress add_post_meta и update_post_meta. Ниже пример функции, которая добавляет или обновляет метаданные с префиксом wppuzzle_ для локализации:
function wppuzzle_add_localization_meta($post_id, $locale, $data) {
$meta_key = 'wppuzzle_locale_' . $locale;
if (get_post_meta($post_id, $meta_key, false)) {
update_post_meta($post_id, $meta_key, $data);
} else {
add_post_meta($post_id, $meta_key, $data, true);
}
}Эта функция позволяет хранить произвольные данные (например, SEO описание или дополнительные параметры) для каждого языка, где $locale может быть 'ru', 'en', 'de' и т. п.
Вывод уникальных метаданных на сайте
Чтобы вывести метаданные в шаблоне, используйте функцию:
function wppuzzle_get_localized_meta($post_id, $locale) {
$meta_key = 'wppuzzle_locale_' . $locale;
return get_post_meta($post_id, $meta_key, true);
}<Например, для вывода дополнительного SEO описания в зависимости от текущего языка:
$locale = determine_locale(); // Функция определения языка, например, из URL или настроек
$seo_description = wppuzzle_get_localized_meta(get_the_ID(), $locale);
echo '<meta name="description" content="' . esc_attr($seo_description) . '">';Примеры плагинов для расширенного управления метаданными и локализацией
Advanced Custom Fields (ACF)
ACF — мощный плагин, позволяющий создавать кастомные поля для любых типов записей. С его помощью можно организовать хранение локализованных метаданных через повторяющиеся поля или группировки по языкам.
Например, создайте группу полей с названием "SEO для разных языков" и добавьте поле для каждого языка. В шаблоне вы сможете получить нужные данные через ACF API.
Подробнее о плагине: Advanced Custom Fields на WPSHOP
Clearfy Pro для оптимизации метаданных
Clearfy Pro помогает управлять SEO и оптимизацией сайта, включая метаданные. Особенно полезен для устранения дублированного контента и настройки метаданных в многоязычной среде.
С Clearfy можно гибко настраивать, какие метаданные выводить для разных языков и страниц.
Подробнее: Clearfy Pro на WPSHOP
Как автоматизировать добавление локализованных метаданных при сохранении записи
Чтобы упростить работу редакторов и избежать ошибок, можно добавить автоматическое сохранение метаданных при публикации или обновлении поста. Пример такого хука:
function wppuzzle_save_localized_meta($post_id) {
// Проверяем права и автосохранение
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
if (!current_user_can('edit_post', $post_id)) return;
// Получаем данные из $_POST, например, из кастомных полей
if (isset($_POST['wppuzzle_localized_data'])) {
$localized_data = sanitize_text_field($_POST['wppuzzle_localized_data']);
$locale = sanitize_text_field($_POST['wppuzzle_locale']);
wppuzzle_add_localization_meta($post_id, $locale, $localized_data);
}
}
add_action('save_post', 'wppuzzle_save_localized_meta');Этот код даёт возможность сохранять уникальные данные с указанием языка напрямую из админки при редактировании записи.
Выводы и рекомендации по работе с уникальными метаданными для локализации
Работа с уникальными метаданными — мощный инструмент для тонкой локализации сайта на WordPress. Используйте префиксы в ключах, чтобы избежать конфликтов с другими плагинами и ядром.
Оптимально сочетать ручное добавление через функции add_post_meta, update_post_meta с удобными интерфейсами плагинов, например ACF, и автоматизацией сохранения через хуки.
Для SEO и оптимизации используйте Clearfy Pro или аналогичные решения. Это поможет избежать дублирования и настроить корректный вывод метаданных на разных языках.
Такой подход позволит сделать ваш многоязычный сайт гибким, удобным в управлении и эффективным для посетителей из разных регионов.