在没有 GET 参数的情况下检索页面永久链接
Retrieve page permalink without GET parameters
此多语言站点在末尾生成 url 参数:
- example.fr/?lang=zh
- example.fr/?lang=fr
我想在 header 中精确地表达 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()
,这是良好的第一步。看起来 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">
所以它对我来说很好用。
此多语言站点在末尾生成 url 参数:
- example.fr/?lang=zh
- example.fr/?lang=fr
我想在 header 中精确地表达 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()
,这是良好的第一步。看起来 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">
所以它对我来说很好用。