检索没有 GET 参数的页面永久链接

Posted

技术标签:

【中文标题】检索没有 GET 参数的页面永久链接【英文标题】:Retrieve page permalink without GET parameters 【发布时间】:2019-01-01 02:44:19 【问题描述】:

这个多语言网站最后生成url参数:

example.fr/?lang=zh 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(),这是第一步。似乎核心 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

【讨论】:

感谢您的提示...它没有完全工作,所以我对其进行了一些修改。【参考方案2】:

感谢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">

所以它对我来说很好。

【讨论】:

以上是关于检索没有 GET 参数的页面永久链接的主要内容,如果未能解决你的问题,请参考以下文章

如何获得特定WooCommerce端点的永久链接?

无法使用 laravel 检索 GET 参数

子页面的 Wordpress 自定义永久链接

页面中新链接中的当前 URL 参数

nginx-找不到永久链接的404页面[关闭]

多个永久链接的自定义模板页面wordpress