問題描述

這是我使用的程式碼:

<?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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。