Получить постоянную ссылку на страницу без параметров GET

Этот многоязычный сайт генерирует параметр URL в конце:

  • example.fr/?lang=en
  • example.fr/?lang=fr

Я хочу уточнить 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 и параметр?

1

Решение

Вы используете 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
1

Другие решения

Танки для 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">

Так что у меня все работает нормально.

1

По вопросам рекламы [email protected]