芝生やDIY等のライフハックやWeb制作情報を発信するメディア

メニューを開く

【WordPress】出力されるリンクURLを絶対パスからルート相対パスに変更する方法

WordPress2016年10月14日

WordPressではパーマリンクなど、デフォルトでは以下のようにhttp://もしくはhttps://から始まる絶対パスでURLは出力されます。

http://ドメイン名/ファイル名/

本記事ではこの絶対パスをスラッシュ(/)から始まるルート相対パスに変更する方法をご紹介いたします。

絶対パスからルート相対パスに変更するメリット

  • ソースコード記述削減によるサイトパフォーマンスの向上
  • ソースコードの視認性向上
  • ドメイン移管時の負担軽減

functions.phpに以下のソースを追加

以下のソースコードをfunctions.phpに追加するだけで、出力するURLを絶対パスからルート相対パスに変更することができます。

class relative_URI {
    function relative_URI() {
        add_action('get_header', array(&$this, 'get_header'), 1);
        add_action('wp_footer', array(&$this, 'wp_footer'), 99999);
    }
    function replace_relative_URI($content) {
        $home_url = trailingslashit(get_home_url('/'));
        return str_replace($home_url, '/', $content);
    }
    function get_header(){
        ob_start(array(&$this, 'replace_relative_URI'));
    }
    function wp_footer(){
        ob_end_flush();
    }
}
new relative_URI();

WordPressをドメイン直下ではなく、何らかのディレクトリを切ってその中にインストールしている場合

例えばドメイン直下に/blog/というディレクトリを作ってインストールしている場合は、

return str_replace($home_url, '/', $content);

上記のソース箇所を、

return str_replace($home_url, '/blog/', $content);

このように変更することで応用が可能です。

まとめ

ご紹介したソースコードはサイトデザインやテーマを問いません。
テンプレート自体には修正を加える必要は無く、functions.phpに記述を追加するだけですぐ使えるのでおすすめです。

この記事を読んでいる方にオススメの記事

「WordPress」の他の記事を読む

あいだ さん

2021年10月20日

こんにちは。functions.phpではないですか?

admin さん

2021年10月22日

>あいだ様
かなり過去の記事もかかわらず、ご指摘いただきましてありがとうございます。こちら修正させていただきました。

この記事にコメントする

必須
必須
本文必須

  • 承認制のため、即時には反映されません。

ページの先頭に戻る