问题描述
这是我使用的代码:
<?php echo str_replace( home_url(), '', get_permalink($post->ID) ); ?>
它的作用是输出固定链接作为相对 URL,即只有 s lug 。例如,如果固定链接是 http://example.com/2012/01/post-title/
,代码输出的相对 URL 看起来像/2012/01/post-title/
。
问题:所有帖子和页面显示正确的永久链接,这是伟大的。但所有其他页面 (包括主页,搜索和归档) 都会显示第一篇文章的相对 URL,而不是相应页面的相对 URL 。任何想法为什么?我在这里做错了什么?
参考:Get page permalink without wpurl
编辑:这是我试过的还有什么:
在 functions.php
function get_relative_permalink( $url ) {
$url = get_permalink();
return str_replace( home_url(), "", $url );
}
在 header.php
<link rel="alternate" hreflang="en-IN" href="http://in.example.com/<?php%20echo%20get_relative_permalink();%20?>" />
同样的问题也是这样。但是这也显示了一个 not-so-informative 错误。
最佳解决方案
使用 $_SERVER['REQUEST_URI']
代替 get_permalink()
来获取当前的 URL 。
例如如 example.com/test/page echo $_SERVER['REQUEST_URI'];
打印/test/page
次佳解决方案
我用
str_replace(home_url(), '', get_permalink());
如果站点根目录不是/
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。