Я пытаюсь реализовать теги canonical и hreflang в WordPress, но не могу получить текущий URL-адрес посещенной страницы.
Я пытался :
<?php echo site_url(); ?>
Но возвращает https://www.example.com вместо https://www.example.com/current-page1






Функция 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/.
Это должно быть хорошо, если предположить, что ваша функция выполняется во время цикла объекта, поскольку она вернет URL-адрес этого объекта без параметров, а не URL-адрес страницы поиска :) - немного протестирую его, чтобы убедиться, хотя, как и я здесь исчерпание памяти (что, признаюсь, иногда меня подводит) :)
Если постоянные ссылки равны:
$actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
Это полезно для простых постоянных ссылок, но стоит отметить, что он не добавляет http:// или https://, что обычно не является проблемой, возможно, стоит отредактировать свой ответ и упомянуть об этом, на всякий случай :)
Пробовал, но все равно возвращает корневой URL.
По-прежнему то же самое ... имеет ли значение, что я не использую базовую тему WP? Может есть другая функция ...
На случай, если кому-то это понадобится. Код ниже должен получить точный URL-адрес, включая параметры.
home_url($_SERVER['REQUEST_URI']);
Вы можете повторить или вернуть его в зависимости от вашего варианта использования. например
echo home_url($_SERVER['REQUEST_URI']);
или же
return home_url($_SERVER['REQUEST_URI']);
он не работает для wp, установленного в подпапке. это удваивает подпапку
@SergeyKorzhov прав. каково решение, если Wp установлен во вложенной папке?
Спасибо за подробности ... У меня нет параметров, кроме "? S = " для поиска на сайте (так что да, это параметр!)