Я хочу добавить пользовательский код PHP, чтобы всякий раз, когда страница моего сайта загружалась в моем браузере, URL-адрес этой страницы отображался на экране. Я могу использовать echo get_permalink()
, но это не работает на всех страницах. Некоторые страницы (например, моя домашняя страница ) отображают несколько сообщений, и если я использую get_permalink()
на этих страницах, URL отображаемой страницы не возвращается (я считаю, что он возвращает URL последнего сообщения в цикле). Для этих страниц, как я могу вернуть URL?
Могу ли я прикрепить get_permalink()
к определенному хуку, который срабатывает до выполнения цикла? Или я могу как-то вырваться из цикла, или сбросить его после завершения?
Благодарю.
php
loop
permalinks
urls
cag8f
источник
источник
is_home()
или иis_page( 'fr' )
т. д. и ставить скрипт в очередь, только если он верный?if ( home_url( $wp->request ) == home_url() ) { wp_enqueue_script();}
Это, кажется, срабатывает на каждой домашней странице, независимо от языка. Это то, что вы предлагали?$_SERVER['REQUEST_URI']
и компанию? Смотрите этот вопрос: stackoverflow.com/q/6768793/247696Ответы:
get_permalink()
действительно полезно только для отдельных страниц и постов, и работает только внутри цикла.Самый простой способ, который я видел, это:
$wp->request
включает в себя часть пути URL, например./path/to/page
иhome_url()
выводит URL в Настройки> Общие, но вы можете добавить к нему путь, поэтому мы добавляем путь запроса к домашнему URL в этом коде.Обратите внимание, что это, вероятно, не будет работать с постоянными ссылками, установленными на Plain, и исключит строки запроса (
?foo=bar
часть URL).Чтобы получить URL-адрес, когда постоянные ссылки заданы как обычные, вы можете использовать его
$wp->query_vars
, передав егоadd_query_arg()
:И вы можете объединить эти два метода, чтобы получить текущий URL, включая строку запроса, независимо от настроек постоянной ссылки:
источник
echo '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
.echo home_url( $wp->request )
. Я обеспечил, чтобы включитьglobal $wp
также. Постоянные ссылки не являются «Обычными», но имеют значение «Имя публикации». Я также не вижу соответствующих ошибок PHP в журнале. Эта конкретная страница является частью моего сайта разработчика, который в противном случае заблокирован для посетителей. Я не уверен, имеет ли это значение или нет. редактировать: на самом деле, держите эту мысль - может быть ошибка пользователя.trailingslashit()
к ним, хотя, в зависимости от ваших потребностей.Вы можете использовать приведенный ниже код, чтобы получить весь текущий URL в WordPress:
Это покажет полный путь, включая параметры запроса.
источник
array()
на$_GET
. то есть:home_url(add_query_arg($_GET,$wp->request));
источник
Следующий код даст текущий URL:
Вы можете использовать приведенный ниже код, чтобы получить полный URL вместе с параметрами запроса.
Это покажет полный путь, включая параметры запроса. Это сохранит параметры запроса, если они уже есть в URL.
источник
wp-admin/plugins.php
мой текущий URL, это только корневой путь и строки запроса.Это улучшенный способ примера, который упоминался ранее. Он работает, когда включены красивые URL, однако он отбрасывает, если есть какой-либо параметр запроса, такой как / page-slug /? Param = 1, или если URL вообще безобразен.
Следующий пример будет работать в обоих случаях.
источник
Может быть,
wp_guess_url()
это то, что вам нужно. Доступно с версии 2.6.0.источник
home_url()
.Почему бы просто не использовать?
источник