В чем разница между home_url () и site_url ()

Я понимаю, что site_url () возвращает место, где находятся основные файлы wordpress.

Итак, если мой блог размещен в http://example.com/blog, то site_url () возвращает http://example.com/блог

Но как отличается home_url ()? Для меня home_url () возвращает то же самое: http://example.com/blog

Если это так, то могу ли я заставить Wordpress возвращать http://example.com/?

48 голосов | спросил Praveen 17 J0000006Europe/Moscow 2011, 22:07:10

5 ответов


39

Вы задаете сразу два вопроса:

  1. В чем разница между home_url () и site_url ()?
  2. Как заставить WordPress вернуть корневой URL-адрес без подкаталога, где он установлен?

Вот ответы, и я подтвердил с Андреем Насином, основным разработчиком WordPress, а также проверил некоторые серверные тесты, чтобы подтвердить, что сказал мне Андрей.

Вопрос # 1

В целом> Настройки wp-admin, home_url () ссылаются на поле с надписью «Адрес сайта (URL)». Смущает, да? Да, он говорит «Адрес сайта», поэтому вы можете предположить site_url (), но вы ошибаетесь . Запустите свой собственный тест, и вы увидите. (Вы можете временно оставить поле echo H1 с site_url () и home_url () значениями в верхней части функций вашей темы. )

Между тем site_url () ссылается на поле с надписью «Адрес (URL) WordPress» в разделе «Общие»). Настройки.

Итак, если вы хотите ссылаться на то, где физический путь может быть таким, как вызов пути папки плагина на URL-адресе для загрузки изображения или вызов пути к папке темы для загрузки изображения, вы должны фактически использовать другие функции для них - посмотрите plugins_url () и get_template_directory_uri ().

site_url () всегда будет местом, где вы можете попасть на сайт, нажав на /wp-admin в конце, а home_url () не будет надежно находиться в этом месте.

home_url () будет там, где вы установили свою домашнюю страницу, установив General> Настройки «Адрес сайта (URL)».

Вопрос № 2

Итак, если я разместил свой блог в http://example.com/blog, а example.com - это просто статический сайт, на котором у меня есть портфолио, то это будет сценарий, который соответствует вашему вопросу. В таком случае я бы использовал этот фрагмент кода:

& л;? PHP
функция getDomain () {
    $ sURL = site_url (); //Функция WordPress
    $ asParts = parse_url ($ sURL); //Функция PHP

    if (! $ asParts)
      wp_die ('ОШИБКА: Путь коррумпирован для синтаксического анализа.'); //заменим это на лучший результат

    $ sScheme = $ asParts ['scheme'];
    $ nPort = $ asParts ['port'];
    $ sHost = $ asParts ['host'];
    $ nPort = 80 == $ nПорт? '': $ nПорт;
    $ nPort = 'https' == $ sScheme AND 443 == $ nПорт? '': $ nПорт;
    $ sPort =! empty ($ sPort)? ": $ nПорт": '';
    $ sReturn = $ sScheme. ': //'. $ sHost. $ Šport;

    return $ sВернуться;
}
ответил Volomike 30 AMpMon, 30 Apr 2012 04:54:56 +040054Monday 2012, 04:54:56
7

Если вы хотите, чтобы WP был установлен в директории, но на домашнем сайте вашего корня домена, вам нужно переместить основной файл index.php в корневой каталог вашего домена и отредактировать инструкцию require в вашей директории.

Этот процесс описан здесь: Предоставление WordPress собственного каталога .

ответил Milo 17 J0000006Europe/Moscow 2011, 22:12:30
2

Чтобы ответить на второй вопрос:

  

Q: Если это так, то могу ли я заставить Wordpress возвращать http://example.com/?

Вы не можете, если вы не выполните Предоставление WordPress своего собственного каталога . Используя это, вы помещаете файлы ядра WordPress в /blog или /WordPress, а затем index.php в свой корень.

Если вы решите разместить WordPress внутри своего собственного каталога, вы должны использовать home_url () для перехода на index.php и site_url () для получения основных файлов и т. д.

Отношения: Codex для site_url
< Codex для предоставления собственного каталога Wordpress

ответил xLRDxREVENGEx 17 J0000006Europe/Moscow 2011, 22:37:10
1

Функции site_url () и home_url () аналогичны и могут привести к путанице в том, как они работают. Функция site_url () извлекает значение, указанное в таблице таблицы wp_options для siteurl в вашей базе данных. Это URL-адрес основных файлов WordPress. Если ваши основные файлы существуют в подкаталоге /wordpress на вашем веб-сервере, значение будет http://example.com/wordpress. Функция home_url () возвращает значение для дома в таблице wp_options. Это адрес, который вы хотите посетить, чтобы просмотреть веб-сайт WordPress. Если ваши основные файлы WordPress существуют в /wordpress, но вы хотите, чтобы ваш URL-адрес веб-сайта был http://example.com, исходное значение должно быть http: //example.com.

ответил Nanhe Kumar 17 AMpWed, 17 Apr 2013 11:41:34 +040041Wednesday 2013, 11:41:34
-1

Самый простой способ получить URL-адрес сайта без каких-либо подкаталогов ( http://example.com/ вместо этого http://example.com/blog ), просто используйте обратную косую черту /

Например, если вы наберете:

<a href = "/"> домен url </a>

Он создаст ссылку, которая идет в ваш домен

ответил jake 5 Maypm16 2016, 12:12:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132