Intereting Posts
Как добавить элемент после каждого сообщения в цикле, но не последний Изменение базового языка одного плагина Установка даты отправки сообщения "Примечание: Неверное сформированное числовое значение, встречающееся" Почему редактор HTML не переносит мой код в теги абзаца при нажатии кнопки ввода последний Измененный и последний, последний вопрос! Использование подчеркиваний вместо дефис в постоянной ссылке Не имеет значения, есть ли у меня более одного комментария. get_comments_number все равно равен одному? как печатать общее количество сообщений, отфильтрованных по категориям? Создать страницу в шаблонах для страниц или в менеджере страниц? add_image_size создает множество изображений (разных размеров) Значок пользовательской таксономии, чтобы изменить текст, отображаемый в Внешний вид> Меню Измените поведение тега <! – more -> Скрыть кнопку на основе результата PHP Удалить пункт меню навигации по сценарию Уровень доступа, похоже, перешел от администратора к редактору

В чем разница между 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> 

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