Этот многоязычный сайт генерирует параметр URL в конце:
Я хочу уточнить hreflang в заголовке, поэтому я написал:
<link rel="alternate" href="<?php echo get_permalink('') ;?>" hreflang="fr-fr" />
Это работает, но затем я получаю url + параметр, поэтому hreflang — это flase:
<link rel="alternate" href="https://www.example.fr/domaine/activite/industrie/?lang=fr" hreflang="fr-fr">
<link rel="alternate" href="https://www.example.fr/domaine/activite/industrie/?lang=fr" hreflang="en-fr">
Вот результат, который я хочу:
<link rel="alternate" href="https://www.example.fr/domaine/activite/industrie/?lang=fr" hreflang="fr-fr">
<link rel="alternate" href="https://www.example.fr/domaine/activite/industrie/?lang=en" hreflang="en-fr">
Как я могу получить отдельно URL и параметр?
Вы используете get_permalink()
это первый хороший шаг. Кажется, что нет ничего встроенного в функцию Core WordPress для удаления параметров GET, но вот небольшой взлом, который вы можете сделать:
Сначала выясните, что такое параметр GET:
$lang = $_GET['lang']
Затем нам нужно удалить параметр GET из постоянной ссылки … что сложно. Самый простой способ — просто удалить ?lang=$lang
но если у вас есть постоянные ссылки, содержащие строки запроса, это может вызвать некоторые проблемы.
Если постоянная ссылка, которая вам нужна, не содержит других строк запроса, то вот как вы можете это сделать:
$wp_perma = get_permalink( '' );
$lang = $_GET['lang'];
$wp_perma = str_replace( '?lang=' . $_GET['lang'], '', $wp_perma );
echo $wp_perma
Танки для Laken Я мог добиться того, чего хотел, с небольшим изменением:
Реализация :
<link rel="alternate" href="<?php $wp_perma = get_permalink( '' );
$lang = $_GET['?lang'];
$wp_perma = str_replace( '' . $_GET['?lang'], '', $wp_perma );
echo $wp_perma ;?>" hreflang="x-default" />
В следствии :
<link rel="alternate" href="https://www.example.fr/domaines/activite/?lang=en" hreflang="x-default">
Так что у меня все работает нормально.