Возврат текущего URL в WordPress

Я пытаюсь реализовать теги canonical и hreflang в WordPress, но не могу получить текущий URL-адрес посещенной страницы.

Я пытался :

 <?php echo site_url(); ?>

Но возвращает https://www.example.com вместо https://www.example.com/current-page1

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
6 503
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Функция site_url() возвращает фактический корневой URL-адрес веб-сайта. В зависимости от того, где вы вызываете свой URL, вы можете попробовать get_the_permalink(), но более верным способом будет использование метода $wp->request. Как это:

global $wp;
echo home_url( $wp->request )

Основная проблема с этой функцией заключается в том, что параметры URL не указаны, поэтому, если ваша ссылка выглядит примерно так: http://example.com/test/?myparam=1, она вернет только http://example.com/test/.

Спасибо за подробности ... У меня нет параметров, кроме "? S = " для поиска на сайте (так что да, это параметр!)

B4b4j1 08.06.2018 15:32

Это должно быть хорошо, если предположить, что ваша функция выполняется во время цикла объекта, поскольку она вернет URL-адрес этого объекта без параметров, а не URL-адрес страницы поиска :) - немного протестирую его, чтобы убедиться, хотя, как и я здесь исчерпание памяти (что, признаюсь, иногда меня подводит) :)

Frits 08.06.2018 15:37

Если постоянные ссылки равны:

$actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

Это полезно для простых постоянных ссылок, но стоит отметить, что он не добавляет http:// или https://, что обычно не является проблемой, возможно, стоит отредактировать свой ответ и упомянуть об этом, на всякий случай :)

Frits 08.06.2018 15:34

Пробовал, но все равно возвращает корневой URL.

B4b4j1 08.06.2018 15:36

По-прежнему то же самое ... имеет ли значение, что я не использую базовую тему WP? Может есть другая функция ...

B4b4j1 08.06.2018 16:02
Ответ принят как подходящий

На случай, если кому-то это понадобится. Код ниже должен получить точный URL-адрес, включая параметры.

home_url($_SERVER['REQUEST_URI']);

Вы можете повторить или вернуть его в зависимости от вашего варианта использования. например

echo home_url($_SERVER['REQUEST_URI']);

или же

return home_url($_SERVER['REQUEST_URI']);

он не работает для wp, установленного в подпапке. это удваивает подпапку

Sergey Korzhov 02.04.2020 12:14

@SergeyKorzhov прав. каково решение, если Wp установлен во вложенной папке?

Sandeep Kumar 29.04.2021 05:21

Другие вопросы по теме