質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • WordPress

    7450questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

wordpress リンクのパスを絶対パスから相対パスに変更する方法

解決済

回答 2

投稿

  • 評価
  • クリップ 2
  • VIEW 2,983

dreamfactory

score 10

お世話になります。

wordpressでHPを作成していたところ、リンクが絶対パスになっていたことに気づき
調べたところwordpressは標準で絶対パスになっているということがわかりました。

しかし、将来的にドメインの引越しを考えており、相対パスに変更したいです。

ネットで調べて下記をfanctions.phpに追記することで相対パスに変更できると

書いてあり試してみたのですが変わらなかったです。

参考場所
wordpressのリンクのパスを絶対パスから相対パスに変更する方法

function make_href_root_relative($input) {
    return preg_replace('!http(s)?://' . $_SERVER['SERVER_NAME'] . '/!', '/', $input);
}

//パーマリンク絶対パス→相対パス
function root_relative_permalinks($input) {
    return make_href_root_relative($input);
}
add_filter( 'the_permalink', 'root_relative_permalinks' );

使用テーマはFirstです。

よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

次のページのコードを試してみてください。Facebook等と連携する場合に支障が無いです。

[WordPress] すべての URL を相対 URL に置換する ( ただし OGP 内の画像等は、置換しない)
https://gist.github.com/wokamoto/4633166

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/17 17:40

    回答ありがとうございます。

    これはどこかに追記するのでしょうか

    それとも書き換えるのでしょうか

    キャンセル

  • 2017/09/17 17:47

    テーマのfunctions.phpに追記です。

    キャンセル

  • 2017/09/17 19:06

    ありがとうございます。おかげさまで相対パスで表示されるようになりました。ただ、新たな問題として、リンク先の階層がひとつ上を見に行ってしまいます。
    例えば、/abcの中のindex.phpから同じ/abcのなかにあるtest.phpへのリンクが/abc/test.phpとなってしまいます。cssも全てこの形になってしまっています。
    どこを修正すればよろしいのでしょうか?

    キャンセル

  • 2017/09/17 19:54

    /abcやtest.phpは何の話しですか?

    キャンセル

  • 2017/09/17 20:08

    functions.phpの位置が/abc/wp-content/themes/first/functions.phpとなっています。
    この/abcがサーバー上のルートディレクトリです。
    wordpressもルートディレクトリにインストールしています。
    今まで絶対パスだったのが教えて頂いたように追記したら相対パスにすることができました。
    ただ、リンクが通常href="index.php"となるはずのものが、href="/abc/index.php"と同じ/abc内のファイルからもなってしまうため、リンク先にいけなかったり、cssを参照できなかったりしてしまいます。

    キャンセル

  • 2017/09/17 20:25

    そのリンクはWordPressで生成したものですか?でなければ書き換えれば良いだけではないでしょうか?

    キャンセル

  • 2017/09/17 20:49

    wordpressで作成したものになります。

    キャンセル

  • 2017/09/17 21:11

    自動的に生成したリンクなんでしょうか?どの部分のことなのかもう少し具体的に書いてください。

    キャンセル

  • 2017/09/17 21:41

    自動的に生成されるcss等のリンク全てです。
    なぜかルートディレクトリを含むリンク先になってしまっています。
    そのためリンク切れ状態になってしまっているのです。
    WprdPress自体はルートディレクトリにインストールしています。

    キャンセル

  • 2017/09/17 21:52

    functions.phpのバックアップを取って元々あるコードと今回追加したコードだけを書いた場合はどうなりますか?

    キャンセル

  • 2017/09/17 22:13

    functions.phpはなにもいじってなくて、今回教えて頂いたコードを追加しました。
    教えて頂いたコードの一番上の

    <?php

    の部分は消さないとエラーになるので消して、一番下に追加しております。

    キャンセル

  • 2017/09/17 23:08

    最上部の<?phpは消さないと駄目ですね。
    追加されたコードが無くてそれですか…
    プラグインを入れてれば全て停止するとどうなりますか?

    キャンセル

  • 2017/09/17 23:43

    停止して、一応パソコンを再起動してみたのですが変わらなかったです・・・。
    夜遅くまですいません・・・。

    キャンセル

  • 2017/09/17 23:54

    テーマはこれですかね?
    https://ja.wordpress.org/themes/first/

    手元の環境でそのテーマにそのコードを追加して特に問題無いんですよね。
    ちなみにPHP7の場合エラーが出るので修正が必要ですが、そのエラーと今回の問題は無関係です。

    PCの再起動とは?ローカル環境でやってますか?
    まぁ、この問題と時に関係ないですけど。

    ブラウザのキャッシュを削除するか、別のブラウザを使っても同じでしょうか?
    あと気になっているのが、test.phpは何ですか?パーマリンクで.phpを入れているという意味ですか?

    キャンセル

  • 2017/09/18 00:28

    遅くにすみません。Wordpress初心者なもので・・・
    今回借りているサーバー内の/web/abcにWordPressをインストールしました。
    サーバーの仕様として/webの中の任意のディレクトリが下記のように表示されます。

    サーバー名/abc/

    この/abcディレクトリにWordPressをインストールし、ページを作成したら普通にブラウザ上からページが見れました。
    今回ドメインを取得し、ドメインの参照先が/web/abcに設定しました。
    ドメイン名でindex.phpは確認できたのですが、別のページに飛ぶとURLがドメイン名ではなく、サーバー名/abc/パーマネント/ となっており、理由が絶対パスだからだとわかりました。
    なので、相対パスに変更したくて、質問させて頂いたのです。

    おかげさまで、相対パスにはなったのですが、index.phpの形が崩れており、何故かとソースを見たらcss等の全ての参照先の頭に/abc がついていたのです。

    そしてもうひとつの問題として、index.php以外のページは、サーバー名/abc/パーマネント/ なら表示されるのですが、ドメイン名/パーマネント/ で表示されません。ちなみに、ドメイン名/abc/パ-マネント/ でも表示されません。
    Internal Server Errorとなってしまっています。

    通常のhtmlなら /abc がルートディレクトリとなり、他のページもルートディレクトリまでのパスがURLに表記されていたら見れていたのですが、何故WordPressではそうならないのかがわかりません。
    根本的に何か間違っているのでしょうか?

    キャンセル

  • 2017/09/18 00:45

    トップページがhttp://example.com/abcでしょうか?
    管理画面、一般設定のWordPress アドレス (URL)やサイトアドレス (URL)にabcが入ってますよね?
    であるならabcはルートディレクトリではないと思います。
    しかし、インストールディレクトリがどうであれそのような現象は起きないので何か別の問題があるように思いますが、現状では把握できません。
    正常に稼働している状態で500エラーが出るのは異常です。

    キャンセル

  • 2017/09/18 00:54

    トップページはhttp://example.com/ です。
    サーバー名/web/abc/ = http://example.com/ という形で設定しています。
    ですので、/abc はルートディレクトリになります。

    指摘していただいたように別の問題があるのでしょうね・・・

    キャンセル

  • 2017/09/18 01:07

    再確認ですがコードを追加すると一部のURLがhttp://example.com/abcになるということですか?
    実際はhttp://example.comは入ってないと思いますが、そこは無視してください。頭が混乱してきました。

    キャンセル

  • 2017/09/19 20:34

    返信が遅くなってしまいすいません。。
    私も頭が混乱してきました。
    私なりに、ワードプレスはサーバー依存なところがあるのかな?と仮定することにしました。
    今回、ay03様のおかげでワードプレスが少しだけ理解できました。
    とりあえず、自社サーバーに落とさず最初からやり直すことにします。
    お手数おかけして申し訳なかったです。
    ありがとうございます!

    キャンセル

+1

All-in-One WP Migration プラグインを使えば、ドメインを置換しつつ簡単に引っ越しできますので、そもそも相対パスにする必要がありません。他に、黒い画面に抵抗がないなら word move (開発環境VCCWにも含む) というものもあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/18 00:55

    ありがとうございます。まずは試してみます

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    7450questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。