WordPressの相対URLについて質問する

WordPressの相対URLについて質問する

WordPress では、画像、ファイル、リンクなどが相対 URL ではなく絶対 URL で挿入されるのがいつもイライラします。相対 URL は、ドメイン名の切り替えや http と https の切り替えなどに非常に便利です。今日、WP_CONTENT_URL を相対 URL で定義すると、投稿にファイルを挿入するときに、src に絶対 URL ではなく相対 URL が使用されることを発見しました。まさに私がずっと望んでいたことです。しかし、WordPress の公式ドキュメントでは、完全なURIWP_CONTENT_URL を定義している場合。

WordPressのコードにはこう書かれている:

WP_CONTENT_URLを完全なURIこのディレクトリの(末尾のスラッシュなし)、例:

define( 'WP_CONTENT_URL', 'http://example/blog/wp-content');

相対URLを使用するとすべて正常に動作するようです。例:

define( 'WP_CONTENT_URL', '/my-content-folder');

しかし、相対 URI を使用すると何か問題がありますか? WordPress が完全な URI で定義する必要があると述べているのには、何か理由があるはずだと私は考えています。

ベストアンサー1

これはコア開発者だけが答えられる/答えるべき質問だと思います。調査してコア チケット #17048 を見つけました:ブラウザに配信されるURLはルート相対である必要があります. コア開発者のアンドリュー・ナシンが説明した理由をここで見つけることができます。彼はまた、この[wp-hackers]スレッドこれら 2 つのリンクには、WP が相対 URL を使用しない理由に関する重要な引用があります。

コアチケット:

  • ルート相対 URL は実際には適切ではありません。WordPress/path/ではない可能性があり、インストール外にある可能性があります。したがって、実際には絶対 URL とそれほど違いはありません。

  • 相対 URL を使用すると、インストールを移動したときに変換を実行するのが著しく難しくなります。ほとんどの状況では検索と置換が必要になりますが、皮肉なことに、これらの理由から絶対 URL の方が移植性が高くなっています。

  • 絶対 URL は、他の多くの場所でも必要です。条件付きでこれらを追加する必要がある場合、処理が増えるだけでなく、潜在的なバグ (およびプラグインとの非互換性) も発生します。

[wp-hackers] スレッド

  • 何に対してかはわかりませんが、WordPress はサブディレクトリにあることが多いため、常にコンテンツを処理してパスの残りの部分を追加する必要があります。これによりオーバーヘッドが発生します。

  • 相対 URL には、先頭にスラッシュがあるものとないものの 2 種類があることに留意してください。どちらにも、これを適切に実装することを不可能にする注意事項があります。

  • WordPress は絶対 URL を保存する必要があります (実際に保存しています)。これにより、コンテンツの事前処理、オーバーヘッド、あいまいさが不要になります。再配置する必要がある場合は、データベース内でグローバルな検索と置換が行われます。


そして、個人的な話ですが、テーマやプラグインのコードがまずくて、WP_CONTENT_URL
定義されています。分からないこれを設定し、これが true であると想定できます。WP.URL/wp-content/何でもしかし、いつもそうとは限りません。途中で何かが壊れることもあります。


プラグイン相対URL(リンク先エドセの回答)は、関数wp_make_link_relativeアクションフック内の一連のフィルターtemplate_redirect非常にシンプルなコードで、良い選択肢のように思えます。

おすすめ記事