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 и использовать такие функции, как:


  • add_query_arg для формирования запроса URL.

  • http_build_url, если эта функция доступна на сервере (однако WPML предоставляет полифилл).

  • trailingslashit, untrailingslashit для добавления или удаления закрывающих слешей.

Например, следующий код:

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

Следует заменить на:

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

Все известные проблемы →