WordPressのリンクの絶対パスを相対パスに変更する方法!

WordPress

WordPressのリンクの絶対パスを相対パスに変更する方法を解説します。

基本、WordPressのリンクは「http://ドメイン名/」から始まる絶対パスが指定されています。

例えば画像を挿入した場合、

<img src="http://ドメイン名/WordPressインストールフォルダ/wp-content/uploads/2020/04/text.jpg" alt="" />

となります。

これを以下のように相対パスに変更します。

<img src="/wp-content/uploads/2020/04/text.jpg" alt="" />

なぜ、リンクのパス指定を絶対パスから相対パスに変更したかったのかというと、ドメインを変更するWordPressのデータを移行時に、絶対パスでは「ドメイン名」の変更が必要になり、作業が面倒だったからです(相対パスの方が手間が省けます)。

WordPressのリンクの絶対パスを相対パスに変更する手順

「functions.php」にコードを追加する

↓WordPressのテーマ内にある「functions.php」を開き、以下のコードを追加してください。

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のリンクの絶対パスが相対パスに変わります。

「functions.php」はとても大事なファイルです。コードを追加する前に必ずバックアップを取っておいてください。

ドメイン直下にフォルダを作ってWordPressをインストールしている場合

ドメイン直下に「test」フォルダを作ってWordPressをインストールしているなら、

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

の部分を

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

に変更してください。

WordPressのテンプレートタグに注意

「functions.php」にコードを追加してもパスが変わらない場合、WordPressのテンプレートタグを確認してみてください。

テンプレートタグが、

<?php bloginfo('url'); ?>

ならリンクは相対パスになりません。

以下のテンプレートタグに変更してください。

<?php get_home_url('url'); ?>

これで相対パスに変更されるはずです。

最後に

WordPressのリンクを絶対パスから相対パスに変更できたら、他に不具合がないか必ず確認するようにしてください。

私は問題ありませんでしたが、WordPressの使用環境により、不具合が出る可能性もあります。

以上「WordPressのリンクの絶対パスを相対パスに変更する方法!」でした!

それではまた。

コメント