Intereting Posts
Настроить определенную RSS-ссылку Каков наилучший способ включения виджета в страницу? удалить приложение с лицевой стороны Показать только один результат из "get_the_category_list" Галлерея галереи с большим и большим размером Интеграция интерактивной карты в пользовательский тип сообщения WordPress styles / default.css в разметке, откуда она взялась? Правильный способ обновления виджета в динамическом новом поле ввода WP_query возвращает ошибку при использовании для пользовательского виджета Что происходит, когда предел памяти WordPress превышен? Удалить wp_add_inline_style Как я могу показать <li> только в том случае, если пользовательское поле имеет контент WooCommerce создает шаблоны пользовательских категорий Может ли детская тема, основанная на теме Starker, быть выпущена как бесплатная тема для публичного использования? Как проверить полноту, когда обновление не выполняется и застряло в режиме обслуживания

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

Я понимаю, что 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/ ?

Solutions Collecting From Web of "В чем разница между home_url () и site_url ()"

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

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

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

Вопрос 1

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

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

Таким образом, если вы хотите ссылаться на то, где физический путь может быть таким, как вызов пути папки плагина на 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; } 

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

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

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

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

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

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

Refrences:
Codex для site_url
home_url для home_url
Codex для предоставления WordPress собственного каталога

Функции 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 .

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

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

 <a href="/">domain url</a> 

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