В дополнение к ответу Раджива Вьяса, вам не нужно передавать непустые параметры 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 (содержащий схему и хост), не работает на мультисайтах с подкаталогами, так как 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-адресе многосайтового сайта, поэтому этого должно быть достаточно.
Не функция, но определенно использует код WordPress ..
http://kovshenin.com/2012/current-url-in-wordpress/
источник
year
добавляются в строку запроса, даже если их раньше не было, а другие параметры, напримерreplytocom
параметр, теряются. Вы знаете решение для этого?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']
- Возвращает детали пользовательского агента (браузера), обращающиеся к веб-странице. Мы можем использовать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']
- возвращает строку запроса, если строка запроса используется для доступа к выполняемому в данный момент сценарию. Строки запроса - это те строки, которые доступны после «?» sign.if вы используете$_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 - это то, что вы ищете.
источник
add_query_args( null, null )
создаст элемент массива с пустым ключом ($qs[""] = null
), хотя это не повлияет на результат.Согласно add_query_arg () | Функция | Ресурсы WordPress для разработчиков , 2-й, 3-й параметры являются необязательными и могут быть опущены.
add_query_args( null, null )
может быть короче .Существует также самая короткая версия, хотя она не рекомендуется, поскольку 1-й параметр является обязательным параметром.
Кроме того, обратите внимание, что оба
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.
источник
У меня
<?php esc_url(the_permalink()); ?>
работает (на странице архива с нумерацией страниц).источник
the_permalink()
повторяет сбежавшую постоянную ссылку, она ничего не возвращает. Theesc_url()
ничего не получает, и если бы это было, это был бы экранированный URL.Я не делаю пагинацию, но вы можете использовать эту функцию, чтобы получить URL в цикле
Или же, если вы не предпочитаете использовать php, вы также можете выбрать здесь метод jquery (это поможет вам заставить его работать вне цикла)
или если вы предпочитаете использовать функцию php, вам нужно получить идентификатор вне цикла
источник
the_permalink()
идентификатор не нужен, когда он вызывается внутри цикла.Вы можете использовать функцию WordPress, чтобы получить URL текущей страницы
Это вернет вам ссылку на URL страницы.
источник
the_permalink()
будет печатать на URL текущего сообщения. Но он не будет работать для других запросов и не будет включать такие переменные, как разбиение на страницы. Так что не совсем ответ @ Рене Шуберт ищет.