【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に記述を追加するだけですぐ使えるのでおすすめです。