Как сделать пагинацию для многоязычных сайтов WordPress

Многоязычные сайты на WordPress требуют особого подхода к пагинации, чтобы правильно отображать постраничную навигацию на разных языках без дублирования контента и с корректными URL. В этой статье мы подробно разберём технические моменты создания пагинации для многоязычных сайтов, используя популярные плагины перевода и собственные решения с WP_Query и WP-PageNavi.

Особенности пагинации на многоязычных сайтах WordPress

Пагинация на многоязычных сайтах усложняется из-за:

  • Необходимости формировать URL с языковыми префиксами или параметрами.
  • Отдельных запросов к базе для каждого языка.
  • Избежания дублирования страниц и неправильных SEO-меток.

Например, если у вас есть постраничная навигация для блога, то на английской версии страницы пагинации должны иметь вид /en/blog/page/2/, а на русской — /ru/blog/page/2/. При этом нужно, чтобы пагинация корректно работала с фильтрами и сортировками для каждого языка отдельно.

Использование WPML и Polylang для пагинации

WPML: настройка пагинации с поддержкой языков

Плагин WPML автоматически добавляет языковые префиксы к URL, но пагинация требует правильного вызова WP_Query с учётом языка:

function wppagenavi_get_multi_language_query($paged) {
    $lang = apply_filters('wpml_current_language', NULL);
    $args = [
        'post_type' => 'post',
        'paged' => $paged,
        'lang' => $lang,  // важно указать язык
        'posts_per_page' => 10
    ];
    return new WP_Query($args);
}

Такой подход гарантирует, что пагинация будет работать именно с текущим языком. Для вывода пагинации используйте WP-PageNavi или стандартную paginate_links(), передавая в них параметры из этого запроса.

Polylang: правильное формирование URL пагинации

Для Polylang важно, чтобы URL пагинации учитывал язык, установленный в текущем интерфейсе:

function wppagenavi_polylang_pagination($paged) {
    $current_language = pll_current_language();
    $args = [
        'post_type' => 'post',
        'paged' => $paged,
        'posts_per_page' => 10,
        'lang' => $current_language
    ];
    return new WP_Query($args);
}

При использовании функций пагинации нужно передавать базовый URL с языковым префиксом, который можно получить через pll_get_term($term_id, $current_language) или функции для получения текущего языка.

Кастомная пагинация для многоязычных запросов с WP-PageNavi

Если вы используете плагин WP-PageNavi, то для многоязычной пагинации следует корректно инициализировать WP_Query с языковыми параметрами, а затем выводить пагинацию так:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = wppagenavi_get_multi_language_query($paged);
if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post();
        // вывод поста
    endwhile;
    wp_pagenavi(['query' => $query]);
endif;
wp_reset_postdata();

Для SEO и удобства пользователей важно, чтобы ссылки пагинации содержали корректные языковые префиксы, что обеспечивается правильной настройкой постоянных ссылок и интеграцией с плагином перевода.

Решение проблемы дублирования URL пагинации

Одной из частых проблем на многоязычных сайтах является дублирование страниц пагинации, когда одна и та же страница доступна по разным URL, что плохо сказывается на SEO. Чтобы избежать этого, рекомендуем:

  • Использовать canonical URL с правильным языковым префиксом.
  • Настроить редиректы с неверных URL на правильные.
  • Проверять, что в wp_head() выводятся правильные метатеги для каждой страницы.

Например, добавьте в файл functions.php следующий фильтр для корректного canonical URL на страницах пагинации:

add_filter('wpseo_canonical', 'wppagenavi_canonical_fix');
function wppagenavi_canonical_fix($canonical) {
    if (is_paged()) {
        global $wp;
        $canonical = home_url($wp->request) . '/';
        $paged = get_query_var('paged');
        if ($paged > 1) {
            $canonical = user_trailingslashit($canonical . 'page/' . $paged);
        }
    }
    return $canonical;
}

Это особенно полезно при использовании SEO-плагинов, например Clearfy Pro, который помогает дополнительно оптимизировать URL.

Практические советы и рекомендации

При работе с пагинацией на многоязычных сайтах:

  • Тестируйте пагинацию на всех языках, учитывая фильтры, сортировки и параметры URL.
  • Используйте стандартные возможности плагинов перевода — WPML и Polylang имеют встроенную поддержку пагинации.
  • Для сложных кастомных запросов всегда указывайте параметр языка в WP_Query.
  • Следите за SEO-аспектами — canonical URL, noindex для дублирующих страниц, корректные hreflang.
  • Если используете WP-PageNavi, передавайте в функцию объект запроса, а не глобальный запрос.

Соблюдая эти рекомендации, вы добьётесь удобной, корректной и SEO-дружелюбной пагинации для многоязычных сайтов на WordPress.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как сделать пагинацию для комплексных запросов с несколькими таксономиями в WordPress
03.04.2026
Как исправить неработающую пагинацию при пользовательских запросах WP_Query в WordPress
28.04.2026
Как добавить пагинацию в WP REST API
09.12.2025
Как сделать пагинацию для WooCommerce с использованием WP-PageNavi
30.12.2025
Как сделать пагинацию для комплексных запросов с meta-записями и таксономиями в WordPress
08.03.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙