获取页面永久链接,而不使用WPURL

时间:2011-11-02 作者:Scott

我当前有一个页面的ID,我想使用它的永久链接作为我正在设置的CPT的永久结构的前端。

现在我可以使用get\\u permalink(),但它会返回完整的URL:

http://www.example.com/imapage/subpage/subsubpage

但我只想回来imapage/subpage/subsubpage

是否有一个函数可以做到这一点,或者我必须设置一些可以减去url中不需要的部分的东西?

5 个回复
最合适的回答,由SO网友:sanchothefat 整理而成

没有任何内置功能可以返回所需的位,但它应该很容易使用home\\u url()函数并从完整url中删除其输出,例如:

function get_relative_permalink( $url ) {
    return str_replace( home_url(), "", $url );
}

SO网友:Levi Cole

这实际上有一个核心功能。wp_make_link_relative($url)

将完整URL路径转换为相对路径。

删除http或https协议和域。将路径“/”保留在开头,因此它不是真正的相对链接,而是来自web根库。

Example

<?php echo wp_make_link_relative(\'http://localhost/wp_test/sample-page/\'); ?>
这将输出/wp_test/sample-page/

Example with Post ID<?php echo wp_make_link_relative(get_permalink( $post->ID )); ?>

Example for current post<?php echo wp_make_link_relative(get_permalink()); ?>

有关这方面的更多信息,请参阅documentation.

SO网友:EAMann

您将无法使用get_permalink() 为此。

如果您深入研究中该函数的代码/wp-includes/link-template.php 你会明白原因的。解析并准备permalink结构后,代码将执行以下操作:

$permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) );
这是在创建链接的结构之后,在任何内容通过有用的过滤器之前立即执行的。

因此,不幸的是,您必须自己提取URL中不需要的部分。我建议使用str_replace() @sanchothefat建议的函数。

SO网友:EarnestoDev

$path = parse_url(get_permalink(...), PHP_URL_PATH); ... 给出URL PATH 只有这不是相对于博客根目录,而是相对于域。它是绝对URI。

SO网友:jwaern

$relative_permalink = wp_make_link_relative(get_permalink($post->ID));

wp_make_link_relative( string $link )

删除http或https协议和域。将路径“/”保留在开头,因此它不是真正的相对链接,而是来自webroot基础。

结束

相关推荐

Custom permalinks

我们有一个自定义类型music./music/ /music/post-name/ 此外,我们还有一个类似标签的分类法genres. 其URL为:/music-genres/genre-name/ 我尝试创建如下URL:/music/ /music/post-name/ /music/genres/ /music/genres/genre-name/ /music-genres/ 应替换为/music/genres/.最后,我们应该得到如下url