Как получить адрес текущей станицы в WordPress
Я был сильно удивлен, когда мне потребовалось узнать адрес той страницы, на которой находится посетитель средствами WordPress и обнаружил, что однозначного решения этого вопроса в сети нет.
Конечно, можно легко получить URL текущего поста функцией get_permalink(), однако, что если я нахожусь вне цикла, например в файле шаблона header.php, и что если я физически нахожусь на главной странице или на странице категории, а не на странице записи? Можно было нагородить огород if-ов и функций возвращающих адрес страниц того или иного типа (отдельно для главной или отдельно для категорий), однако было найдено более изящное решение:
global $wp;
$current_url = add_query_arg($wp->query_string, '', home_url($wp->request));
И все!
P. S. Многие скажут, что можно было бы использовать глобальную PHP-переменную $_SERVER. Что ж, попробуйте, однако данные в этой переменной зависят от настроек сервера, а значит результаты могут быть не всегда однозначны для разных сайтов на разных хостингах, что возвращает нас к очередной куче if-ов.