1. ホーム
  2. wordpress

[解決済み] WordPressの相対URL

2022-06-23 18:54:58

質問

WordPressで、画像、ファイル、リンクなどが相対URLではなく絶対URLで挿入されることにいつも不満を感じています。相対 URL は、ドメイン名の切り替え、http と https 間の変更などにおいてはるかに便利です。今日、WP_CONTENT_URLを相対URLで定義すると、投稿にファイルを挿入するときに絶対URLの代わりに相対URLをsrcに使用することを発見しました。ちょうど私がいつも望んでいたことです! しかし、WordPressの公式ドキュメントによると、投稿にファイルを挿入するときは、相対URLの代わりに 完全なURI を使うべきだと書いてあります。

WordPress codexによると :

<ブロッククオート

WP_CONTENT_URLを設定します。 フルURI を設定します (末尾に スラッシュがない)、例えば

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

相対 URL を使用すると、すべてうまくいくようです。

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

しかし、相対URIを使うことに何か問題があるのでしょうか?WordPressが完全なURIで定義すべきと述べているのは、何か理由があるに違いないと思っているのですが。

どのように解決するのですか?

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

コアチケットです。

  • ルート相対 URL は本当は適切ではないのです。 /path/ は WordPress ではないかもしれませんし、インストールされていない場所かもしれません。だから、絶対的なURLと大差ないのです。

  • 任意の相対 URL は、インストールが移動されたときに変換を実行することを著しく困難にします。ほとんどの状況で find-replace が必要となり、絶対的な URL を持つことは、皮肉にもそのような理由でより移植性が高くなります。

  • 絶対 URL は他の多くの場所で必要とされます。条件付きでこれらを追加する必要があるため、処理に手間がかかるだけでなく、潜在的なバグ (およびプラグインとの非互換性) が発生する可能性があります。

[wp-hackers】スレッド

  • WordPress はサブディレクトリにあることが多いので、何に対する相対的なものかはわかりません。 つまり、常にコンテンツを処理して、残りのパスを追加する必要があります。これは はオーバーヘッドを導入します。

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

  • WordPress は絶対的な URL を保存する必要があります (そして、実際に保存します)。これは はコンテンツの前処理を必要とせず、オーバーヘッドもなく、曖昧さもありません。もし 再配置する必要がある場合、それはデータベース内のグローバルな検索-置換です。


また、個人的なことですが、テーマやプラグインのコーディングが悪くて、次のような場合に壊れてしまうことが何度もありました。 WP_CONTENT_URL が定義されていると、単純に壊れてしまうようなテーマやプラグインを見つけたことがあります。

それらは don't know を設定し、これを真とすることができる。 WP.URL/wp-content/WhatEver というように、常にそうであるとは限りません。そして、途中で何かが壊れるでしょう。


プラグイン 相対URL (リンク先 の回答 を含む) に、関数を適用します。 wp_make_link_relative の中に アクションフックにある一連のフィルタ template_redirect . これは非常にシンプルなコードで、良いオプションだと思います。