WPML
ステータス
解決済み
解決されたバージョン
4.0.0

問題の概要

4.0.0より前のバージョンでは、WPMLは変換時に入力URLと末尾のスラッシュを一致させようとしていました。残念ながら、このロジックはすべてのケースに対応できるものではありませんでした。

4.0.0以降、変換されたURLは以下の標準的なWordPressの動作に一致するようになります。

  • パスもクエリもない場合、WPMLは入力URLに一致させようとします(例:http://wpml.com => http://wpml.fr、または http://wpml.com/ => http://wpml.fr/)。ただし、通常WordPressは末尾のスラッシュなしでホームURLを出力します。
  • パスがなくクエリがある場合、常に末尾にスラッシュが付きます(例:http://wpml.com?foo=bar => http://wpml.fr/?foo=bar)。
  • パス(ファイルではない)がある場合、末尾のスラッシュはパーマリンクのフォーマットに依存します。
  • ファイルを指すパスがある場合、(パーマリンクのフォーマットに関係なく)末尾にスラッシュは追加されません。例:http://wpml.com/wp-content/uploads/hello.csv

回避策

この変更は、テーマやサードパーティ製プラグインに予期せぬ副作用をもたらす可能性があります。

URLを構築する際には文字列の連結を避け、以下のような関数を使用することを強くお勧めします。


  • URLクエリを構築するためのadd_query_arg

  • サーバー上でこの関数が利用可能な場合はhttp_build_url(ただし、WPMLがポリフィルを提供しています)。

  • 末尾のスラッシュを追加または削除するためのtrailingslashituntrailingslashit

たとえば、以下のコードは:

$url = get_home_url() . '/' . $path;

次のように置き換える必要があります:

$url = trailingslashit( get_home_url() ) . $path;

すべての既知の問題 →