Получить текущий URL страницы (включая разбиение на страницы)

Есть ли функция WP для автоматического получения правильного URL-адреса текущей страницы? Смысл, если я только открыл один пост, функция возвращает то же, что и get_permalink() , но если я на странице с разбивкой по страницам (при разбиении на страницы с комментариями), функция возвращает то же, что и get_pagenum_link(get_query_var('paged')) .

Я искал код, но не нашел то, что искал. (Но даже get_pagenum_link() не зарегистрировано.)

Я знаю об этой функции уже, но я был бы рад, если бы была «родная» функция WP, которая выполняет эту работу.

Заранее спасибо! С уважением, Рене

В дополнение к ответу Раджева Вьяса вам не нужно передавать какие-либо непустые параметры в add_query_arg() . Для меня всегда работало хорошо:

 // relative current URI: $current_rel_uri = add_query_arg( NULL, NULL ); // absolute current URI (on single site): $current_uri = home_url( add_query_arg( NULL, NULL ) ); 

Функция возвращается к $_SERVER[ 'REQUEST_URI' ] и применяет к ней urlencode_deep() . См. https://github.com/WordPress/WordPress/blob/3.8/wp-includes/functions.php#L673

Изменить: поскольку $_SERVER[ 'REQUEST_URI' ] представляет нефильтрованный ввод пользователя, всегда следует избегать возвращаемого значения add_query_arg() при изменении контекста. Например, используйте esc_url_raw() для использования БД или esc_attr() или esc_url() для HTML.

Обновить

Показанный пример, который должен создать абсолютный URI (содержащий схему и хост), не работает в multisite с подкаталогами, поскольку home_url() вернет полный URI, включая сегмент пути. Лучшим решением для многозначного кода будет следующее:

 // absolute URI in multisite aware environment $parts = parse_url( home_url() ); $current_uri = "{$parts['scheme']}://{$parts['host']}" . add_query_arg( NULL, NULL ); 

Ядро WordPress не поддерживает порт, пользователя или пароль в URL-адресе многосайтового сайта, поэтому этого должно быть достаточно.

 global $wp; $current_url = add_query_arg( $wp->query_string, '', home_url( $wp->request ) ); 

Не функция, но определенно использующая код WordPress ..

http://kovshenin.com/2012/current-url-in-wordpress/

1) $_SERVER['REQUEST_URI'] – он возвращает URL-адрес для доступа к странице, выполняющей скрипт. Если вам нужно набрать http://www.example.com/product.php?id=5 для доступа к странице, то $_SERVER['REQUEST_URI'] возвращает /product.php?id=5 .

2) $_SERVER['DOCUMENT_ROOT'] – возвращает корневую директорию сервера, указанную в файле конфигурации сервера. Эта переменная обычно возвращает путь как /usr/yoursite/www в Linux и D:/xamps/xampp/htdocs в Windows.

3) $_SERVER['HTTP_HOST'] – возвращает имя хоста, как указано в заголовке http. Эта переменная обычно возвращает путь, например example.com когда вы находите http://example.com в адресной строке браузера и возвращаете www.example.com когда вы видите http://www.example.com в адресной строке , Это очень полезно, когда вы должны сохранять сеанс, делая онлайн-платеж с помощью PHP, поскольку сеанс, хранящийся для http://example.com , не такой же, как для http://www.example.com .

4) $_SERVER['HTTP_USER_AGENT'] – возвращает $_SERVER['HTTP_USER_AGENT'] о пользователе (браузере), доступ к веб-странице. Мы можем использовать strpos($_SERVER["HTTP_USER_AGENT"],”MSIE”) для обнаружения Microsoft Internet explorer или вы можете использовать strpos($_SERVER["HTTP_USER_AGENT"],”Firefox”) для обнаружения браузера Firefox в PHP.

5) $_SERVER['PHP_SELF'] – возвращает имя файла текущего исполняемого скрипта. Предположим, что вы обращаетесь к URL http://www.example.com/product.php?id=5 затем $_SERVER['PHP_SELF'] возвращает /product.php в вашем скрипте.

6) $_SERVER['QUERY_STRING'] – возвращает строку запроса, если строка запроса используется для доступа к исполняемому скрипту. Строки запроса – это строка, которая доступна после знака «?». Если вы используете $_SERVER['QUERY_STRING'] в скрипте, выполняющем следующий URL-адрес: http://www.example.com/index.php?id=5&page=product то он возвращает id=5&page=product в вашем скрипте.

7) $_SERVER['REMOTE_ADDR'] – возвращает IP-адрес удаленной машины, обращающейся к текущей странице. Но вы не можете рассчитывать на $_SERVER['REMOTE_ADDR'] чтобы получить реальный IP-адрес клиентской машины. См. Эту статью, чтобы узнать, как получить реальные IP-добавления в PHP.

8) $_SERVER['SCRIPT_FILENAME'] – возвращает абсолютный путь к файлу, который в настоящее время выполняется. Он возвращает путь, например, var/example.com/www/product.php в Linux и путь, такой как D:/xampp/xampp/htdocs/test/example.php в Windows.

wp_guess_url – это то, что вы ищете.

Угадайте URL-адрес сайта.

Удалит ссылки wp-admin для получения только возвращаемых URL-адресов, а не в каталоге wp-admin.

add_query_args( null, null ) создаст элемент массива с пустым ключом ( $qs[""] = null ), хотя это не повлияет на результат.

  • functions.php в тегах / 4.6 / src / wp-includes – WordPress Trac

Согласно add_query_arg () | Функция | Ресурсы разработчика WordPress , 2-й, 3-й параметры являются необязательными, и их можно опустить.

add_query_args( null, null ) может быть более коротким .

 $current_url = add_query_args( [] ); 

Существует также кратчайшая версия, хотя она не рекомендуется, так как первый параметр является обязательным параметром.

 $current_url = add_query_args(); 

Кроме того, обратите внимание, что как home_url( add_query_vars( [] ) ) и home_url( add_query_arg( null, null ) ) могут не возвращать действительный URL-адрес при установке WordPress в подкаталог.

например, https://example.com/wp/wp/foo может быть возвращен, когда WordPress установлен в https://example.com/wp/ .


Обновление: 2017/01/23

Моя версия основана на решении Дэвида, чтобы получить абсолютный URL.

 $parts = parse_url(home_url()); $uri = $parts['scheme'] . '://' . $parts['host']; if (array_key_exists('port', $parts)) { $uri .= ':' . $parts['port']; } $uri .= add_query_arg([]); 

Для меня <?php esc_url(the_permalink()); ?> <?php esc_url(the_permalink()); ?> работает (на странице архива с разбивкой на страницы).

Я теперь не разбиваю на страницы, но вы можете использовать эту функцию для получения URL-адреса в цикле

 <?php $ID = get_the_ID(); echo get_permalink( $ID ); ?> 

Или, если вы предпочитаете использовать php, вы также можете выбрать метод jquery здесь (это поможет вам заставить его работать вне цикла)

 $(document).ready(function () { var vhref = $(location).attr('href'); var vTitle = $(this).attr('title'); $('#spnTitle').html('' + vTitle + ''); $('#spnURL').html('' + vhref + ''); });​ 

или если вы предпочитаете использовать функцию php, вам нужно получить идентификатор вне цикла

Вы можете использовать функцию wordpress для получения текущего URL-адреса страницы

 the_permalink() 

Это вернет вам ссылку URL-адреса страницы curremt.