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に挿入する画像をルート相対パス化する(いきなり応用編)」と併用する必要性がないので削除しております。
記事に挿入する画像は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ほど向上しました。まぁ誤差の範囲内ですね。