Устраняем проблему точек в polylang

Атрибут hreflang выглядит следующим образом:

Такая запись дает информацию поисковым системам, о том, что у многоязычной страницы есть альтернативный вариант на другом языке, эти страницы нужно различать, индексировать под разными ссылками и избегать дублирования контента.
Проблема polylang замечена, если в настройках постоянных ссылок стоит точка в полях префикс для рубрик или для меток:

И так выглядит hreflang:

Такая запись является неправильной.
Напомню, что точка в полях префикса ставится, если необходимо убрать отображение префикса в урлах для рубрик или для меток.
Решить эту проблему, можно написав обработчик фильтра для pll_rel_hreflang_attributes. Вставив в functions.php вашей темы такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/** * Edit hreflangs in Polylang */ add_filter('pll_rel_hreflang_attributes', 'edit_polylang_hreflang_attributes', 10, 1); function edit_polylang_hreflang_attributes ($hreflangs) { if (is_category()) { foreach ( $hreflangs as $lang => $url ) { $hreflangs[$lang] = str_replace('/./', '/', $url); } } return $hreflangs; } |
В результате получаем такие атрибуты:

Тестировалось на версии polylang 3.2.5