WordPress リンクの相対パス化 Ver2

HTMLソース内のリンク相対パス化をより強化してみました。

相対パス化コード

テーマか子テーマのfunctions.phpに以下のコードをペーストします。

// The Relative URL filter(link)
function relative_url_filter($input) {
    return str_replace('https://' . $_SERVER['SERVER_NAME'] . '/', '/', $input);
}

//パーマリンク(記事へのリンク)の相対化
add_filter( 'the_permalink', 'relative_url_filter' );

//アーカイブページ(月ごと毎、カテゴリ毎など)の相対化
add_filter( 'get_archives_link', 'relative_url_filter' );

//添付ファイルへのリンクの相対化 
add_filter( 'wp_get_attachment_url', 'relative_url_filter' );
add_filter( 'attachment_link', 'relative_url_filter' );

//カテゴリページへのリンクの相対化
add_filter( 'the_category', 'relative_url_filter' );

//linkタグの相対化
add_filter( 'style_loader_tag', 'relative_url_filter' );

//scriptタグの相対化
add_filter( 'script_loader_tag', 'relative_url_filter' );

//現在の記事に付けられたタグのリンクの相対化
add_filter( 'the_tags', 'relative_url_filter' );

なお以前紹介した「WordPressに挿入する画像をルート相対パス化する(いきなり応用編)」と併用する必要性がないので削除しております。

WordPressに挿入する画像をルート相対パス化する(いきなり応用編)
記事に挿入する画像はfunctions.phpにコードを追加して自動的にルート相対パス化されるようにしていましたが、simplic...
相対パス化コード ざっくり解説

str_replaceを使って対象の「https://サイトのドメイン名/」を「/」に置換しています。本当はpreg_replaceと正規表現でhttp/httpsの柔軟性を持たせるほうが良いのですが、今時https固定ですし正規表現を使わないほうが処理が速いので、シンプルにいきます。

// The Relative URL filter(link)
function relative_url_filter($input) {
    return str_replace('https://' . $_SERVER['SERVER_NAME'] . '/', '/', $input);
}

後は相対化したいリンクに合わせてadd_filterを指定します。


//パーマリンク(記事へのリンク)の相対化
add_filter( 'the_permalink', 'relative_url_filter' );
...以下略
効果・不具合など

コードを切り替えてから1週間経ちましたが特にエラーは出ていないようです。
またhttpレスポンスが2msほど向上しました。まぁ誤差の範囲内ですね。

スポンサーリンク