В чем разница между home_url () и site_url ()
-
-
Вы задаете сразу два вопроса по очень важному вопросу.Ответ на вопрос «В чем разница между home_url () и site_url ()?»отличается от вопроса «Как заставить WordPress возвращать корневой URL-адрес без подкаталога,в котором он установлен?»You're asking two questions at once on a very important question. The answer to "What's the difference between home_url() and site_url()?" is different than the question, "How do I get WordPress to return the URL root without the subdirectory where it's installed?"
- 4
- 2012-04-29
- Volomike
-
Ознакомьтесь с этими руководствами по кодексу: https://codex.wordpress.org/Editing_wp-config.php#WordPress_address_.28URL.29;https://codex.wordpress.org/Editing_wp-config.php#Blog_address_.28URL.29;http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory#Using_a_pre-existing_subdirectory_installReview these codex guides: https://codex.wordpress.org/Editing_wp-config.php#WordPress_address_.28URL.29 ; https://codex.wordpress.org/Editing_wp-config.php#Blog_address_.28URL.29 ; http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory#Using_a_pre-existing_subdirectory_install
- 0
- 2016-10-07
- Tara
-
5 ответ
- голосов
-
- 2012-04-30
Вы задаете сразу два вопроса:
- В чем разница между
home_url()
иsite_url()
? - Как заставить WordPress возвращать корневой URL-адрес без подкаталога,в котором он установлен?
Вот ответы,и я подтвердил это с Эндрю Насином,основным разработчиком WordPress,а также провел несколько серверных тестов,чтобы подтвердить то,что сказал мне Эндрю.
Вопрос №1
В разделе "Общие> Настройки wp-admin"
home_url()
ссылается на поле "Адрес сайта (URL)". Непонятно,а? Да,там написано "Адрес сайта",так что вы можете предположитьsite_url()
,но вы ошибаетесь . Проведите свой собственный тест,и вы увидите. (Вы можете временно поместить полеecho H1
со значениямиsite_url()
иhome_url()
в верхней части файлаfunctions.php вашей темы. )Между тем,
site_url()
ссылается на поле с пометкой «Адрес WordPress (URL)» в разделе «Общие»> «Настройки».Итак,если вы хотите указать,где может быть физический путь,например,вызов пути к папке плагина в URL-адресе для загрузки изображения или вызов пути к папке темы для загрузки изображения,вам действительно следует использовать другие функции для них - посмотрите
plugins_url()
иget_template_directory_uri()
.site_url()
всегда будет местом,откуда вы можете перейти на сайт,добавив/wp-admin
в конце,аhome_url()
не может быть надежно этим местом.home_url()
- это место,где вы установили свою домашнюю страницу,установив "Общие> Настройки" в поле "Адрес сайта (URL)".Вопрос № 2
Итак,если я разместил свой блог в
http://example.com/blog
,аexample.com
- это просто статический сайт,на котором у меня есть тема портфолио,тогда это будет сценарий,который соответствует вашему вопросу. В таком случае я бы использовал этот фрагмент кода:<?php function getDomain() { $sURL = site_url(); // WordPress function $asParts = parse_url( $sURL ); // PHP function if ( ! $asParts ) wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result $sScheme = $asParts['scheme']; $nPort = $asParts['port']; $sHost = $asParts['host']; $nPort = 80 == $nPort ? '' : $nPort; $nPort = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort; $sPort = ! empty( $sPort ) ? ":$nPort" : ''; $sReturn = $sScheme . '://' . $sHost . $sPort; return $sReturn; }
You are asking two questions at once:
- What's the difference between
home_url()
andsite_url()
? - How do I get WordPress to return the URL root without the subdirectory where it's installed?
Here are the answers, and I confirmed with Andrew Nacin, a core developer of WordPress, as well as ran some server tests to confirm what Andrew told me.
Question # 1
In General > Settings of wp-admin,
home_url()
references the field labeled "Site Address (URL)". Confusing, huh? Yeah, it says "Site Address" so you might assumesite_url()
, but you'd be wrong. Run your own test and you'll see. (You can temporarily drop anecho H1
field withsite_url()
andhome_url()
values at the top of your your theme's functions.php.)Meanwhile,
site_url()
references the field labeled "WordPress Address (URL)" in General > Settings.So, if you're wanting to reference where a physical path might be such as calling a plugin's folder path on the URL to load an image, or calling a theme's folder path to load an image, you should actually use other functions for those - look at
plugins_url()
andget_template_directory_uri()
.The
site_url()
will always be the location where you can reach the site by tacking on/wp-admin
on the end, whilehome_url()
would not reliably be this location.The
home_url()
would be where you have set your homepage by setting General > Settings "Site Address (URL)" field.Question # 2
So, if I have placed my blog in
http://example.com/blog
, andexample.com
is just some static site where I have like a portfolio theme, then this would be a scenario that lines up with your question. In such a case, then I would use this snippet of code:<?php function getDomain() { $sURL = site_url(); // WordPress function $asParts = parse_url( $sURL ); // PHP function if ( ! $asParts ) wp_die( 'ERROR: Path corrupt for parsing.' ); // replace this with a better error result $sScheme = $asParts['scheme']; $nPort = $asParts['port']; $sHost = $asParts['host']; $nPort = 80 == $nPort ? '' : $nPort; $nPort = 'https' == $sScheme AND 443 == $nPort ? '' : $nPort; $sPort = ! empty( $sPort ) ? ":$nPort" : ''; $sReturn = $sScheme . '://' . $sHost . $sPort; return $sReturn; }
-
У вас есть ссылка на дискуссию с А.Насиным?Do you have a link to the discussion with A.Nacin?
- 0
- 2012-04-30
- kaiser
-
Это было по электронной почте.Сожалею.О,и спасибо за правку - я вспомню это изменение синтаксиса в следующий раз.It was via email. Sorry. Oh, and thanks for the edit -- I'll remember that syntax change next time.
- 1
- 2012-04-30
- Volomike
-
Мне потребовалось очень много времени и больших усилий,чтобы понять,что «Адрес сайта (URL)»=«домашний» и «Адрес WordPress (URL)»=«siteurl».Им обязательно стоит поменять эти ярлыки.It took me a very long time and a lot of pain to realize that 'Site Address (URL)' = 'home' and 'WordPress Address (URL)' = 'siteurl'. They should definitely change those labels.
- 8
- 2014-01-26
- Jbm
-
Ваш ответ на второй вопрос сорвет куш!Your answer to the second question hits the jackpot!
- 0
- 2018-02-19
- Devner
-
- 2011-06-17
Если вы хотите,чтобы WP был установлен в каталоге,а главная страница сайта - в корне вашего домена,вам необходимо переместить основной файлindex.php в корень вашего домена и отредактировать оператор require,чтобы он указывал в пределах вашего каталога.
Этот процесс описан здесь: Создание собственного каталога WordPress .
If you want WP installed in a directory but the site home on your domain root, you need to move the main index.php file out to your domain root and edit the require statement to point within your directory.
This process is outlined here: Giving WordPress Its Own Directory.
-
Я всегда просто использую home_url (),так как я нахожусь в сетевом режиме wp.Я дал WordPress собственный каталог только один раз,и это мне просто не понравилось.Но я все же использую wp_content_dir на некоторых сайтах.I always just use `home_url()` since i am on wp network mode. I have only given WordPress its own directory once and it just was not my liking. But i do however use the `wp_content_dir` on some sites.
- 0
- 2011-06-17
- xLRDxREVENGEx
-
У меня нет опыта работы с мультисайтами,поэтому я не знаю,как это работает в такой ситуации.Я предпочитаю устанавливать WP в каталог,чтобы все было в чистоте и не загромождало корень.I don't have any experience with multisite, so I'm not familiar how this stuff works in that situation. I prefer installing WP in a directory just to keep things clean and not clutter the root.
- 0
- 2011-06-17
- Milo
-
моя файловая структура,вероятно,одна из лучших.home/usr/public_html/site1,home/usr/public_html/site2 и т. д.,а затем wp_content_dir обычно находится на компакт-дискеmy file structure is probably one of the neatest ones around. `home/usr/public_html/site1` `home/usr/public_html/site2` and so on and then the `wp_content_dir` is usually on a cdn
- 0
- 2011-06-17
- xLRDxREVENGEx
-
если бы установка WP была единственной вещью,все было бы хорошо,но я в основном работаю на серверах других людей,где разбросаны сотни файлов и каталогов.if a WP install were the only thing there it would be fine, but I'm mostly working on other peoples servers with hundreds of files and directories littered about.
- 0
- 2011-06-17
- Milo
-
Правильно ли я понимаю,что site_url () и home_url () одинаковы,если только не настроен каталог установки WordPress,отличный от корня?Is my understanding correct that site_url() and home_url() are the same, unless one sets up their wordpress install directory to be different than the root?
- 0
- 2011-06-20
- Praveen
-
- 2013-04-17
Функции
site_url()
иhome_url()
похожи и могут привести к путанице в том,как они работают.Функция
site_url()
извлекает значение значения дляsiteurl
в таблицеwp_options
в вашей базе данных.Это URL-адрес основных файлов WordPress.
Если ваши основные файлы существуют в подкаталоге/wordpress
на вашем веб-сервере,значением будетhttp://example.com/wordpress
.Функция
home_url()
извлекает значение дляhome
в таблицеwp_options
в вашей базе данных.Это адрес,по которому люди должны посещать ваш сайт WordPress.
Если ваши основные файлы WordPress существуют в
/wordpress
,но вы хотите,чтобы URL-адрес вашего веб-сайта былhttp://example.com
,домашнее значение должно бытьhttp://example.com
.The
site_url()
andhome_url()
functions are similar and can lead to confusion in how they work.The
site_url()
function retrieves the value value forsiteurl
in thewp_options
table in your database.This is the URL to the WordPress core files.
If your core files exist in a subdirectory/wordpress
on your web server, the value would behttp://example.com/wordpress
.The
home_url()
function retrieves the value forhome
in thewp_options
table in your database.This is the address you want people to visit to view your WordPress web site.
If your WordPress core files exist in
/wordpress
, but you want your web site URL to behttp://example.com
the home value should behttp://example.com
. -
- 2011-06-17
Чтобы ответить на ваш второй вопрос:
<цитата>В: Если это верно,могу ли я заставить WordPress возвращать http://example.com/?
Вы не можете этого сделать,если не выполните шаги Предоставление WordPress собственной директории . Это означает,что вы помещаете основные файлы WordPress в
/blog
или/WordPress
,а затем вindex.php
в свой корень.Если вы решите поместить WordPress в свой собственный каталог,вы должны использовать
home_url ()
для перехода кindex.php
иsite_url () для получения файлов ядра и т. д.
Ссылки:
Кодекс дляsite_url
Кодекс дляhome_url
Кодекс для предоставления собственного каталога WordpressTo answer your second question:
Q: If that's correct, then can I get wordpress to return http://example.com/ ?
You can't, unless you take the Giving WordPress its own directory steps. Using this means you put WordPress core files into
/blog
or/WordPress
and then theindex.php
into your root.If you decide to put WordPress inside its own directory then you would use
home_url()
for going toindex.php
andsite_url()
for getting core files and such.Refrences:
Codex forsite_url
Codex forhome_url
Codex for Giving Wordpress Own Directory -
- 2016-05-05
Самый простой способ получить URL-адрес сайта без подкаталогов (вместо этого http://example.com/из http://example.com/blog ),просто используйте обратную косую черту /
Например,если вы напечатаете:
<a href="/">domain url</a>
Будет создана ссылка на ваш домен
The easiest way to get the site url without any sub-directories ( http://example.com/ instead of http://example.com/blog ), just use the backslash /
For example, if you type:
<a href="/">domain url</a>
It will create a link that goes to your domain
-
Спасибо за участие.К сожалению,это не отвечает на вопрос,поставленный ОП.Есть много причин,по которым человеку нужно использовать функции wordpress,о которых спрашивает OP.Маловероятно,что OP просто хочет добавить ссылку на свою домашнюю страницу через html,например,путем редактирования сообщения.Скорее всего,OP редактирует файл темыphp или файл плагина.В любом случае они работают сphp,а не с html.Наконец,хотя OP * ожидал * значения без `/` для * этого * сайта,на другом сайте OP может * ожидать * возврата подкаталога.Это зависит от конфигурации WP для каждого сайта.Thanks for participating. Unfortunately, this does not answer the question posed by the OP. There are many reasons why a person needs to use the wordpress functions OP asks about. It is unlikely that OP simply wants to add link to their home page via html, such as by editing a post. It is more likely, OP is editing a php theme file, or a plugin file. In any case, they are working with php, not html. Finally, while OP *expected* a value without `/` for *this* site, on a different site, OP may *expect* a subdirectory to be returned. It depends on the WP configuration for each site.
- 0
- 2019-01-05
- SherylHohman
Насколько я понимаю,
site_url ()
возвращает местоположение,где находятся основные файлы WordPress.Если мой блог размещен по адресу
http://example.com/blog
,тогдаsite_url ()
возвращаетhttp://example.com/blog код>
Но чем тогда отличается
home_url ()
?Для меняhome_url ()
возвращает то же самое:http://example.com/blog
Если это правильно,могу ли я заставить WordPress возвращать
http://example.com/
?