这是我正在使用的代码:
<?php echo str_replace( home_url(), \'\', get_permalink($post->ID) ); ?>
它所做的是将永久链接作为相对URL输出,即仅输出slug。例如,如果permalink是
http://example.com/2012/01/post-title/
, 代码输出的相对URL如下所示
/2012/01/post-title/
.
Problem: 所有的帖子和页面都显示了正确的永久链接,这很好。但所有其他页面(包括主页、搜索和归档)显示的是第一篇文章的相对URL,而不是相应页面的URL。知道为什么吗?我做错了什么?
Reference: Get page permalink without wpurl
<小时>EDIT: 以下是我尝试过的其他方法:
In functions.php
function get_relative_permalink( $url ) {
$url = get_permalink();
return str_replace( home_url(), "", $url );
}
In header.php
<link rel="alternate" hreflang="en-IN" href="http://in.example.com/<?php echo get_relative_permalink(); ?>" />
这也是同样的问题。但这一条也显示了一个信息量不大的错误。
最合适的回答,由SO网友:Tom J Nowell 整理而成
使用$_SERVER[\'REQUEST_URI\']
而不是get_permalink()
获取当前URL。get_permalink
将为您提供当前帖子的完整地址,而不是访问的URL地址。
e、 g.例如。com/测试/页面echo $_SERVER[\'REQUEST_URI\'];
印刷品/test/page
请注意,这不包括hashtag,因为该部分永远不会发送到服务器,它也不包括?foo=bar
类型参数,这些参数位于$_GET
大堆