2

这个多语言站点最后生成 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 和参数?

4

2 回答 2

1

您正在使用get_permalink()这是第一步。似乎核心 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
于 2018-07-24T13:29:55.540 回答
1

Tanks to 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">

所以它对我来说很好。

于 2018-07-24T15:35:53.773 回答