- Статус
- Решено
- Решено в
- 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;