home_url ()과 site_url ()의 차이점은 무엇입니까


65

내 이해는 site_url()워드 프레스 코어 파일이있는 위치 를 반환 한다는 것입니다 .

그래서, 내 블로그에서 호스팅되는 경우 http://example.com/blog다음 site_url()반환http://example.com/blog

그러나 어떻게 home_url()다릅니 까? 나에게도 home_url()같은 것을 반환합니다.http://example.com/blog

그것이 맞다면 워드 프레스를 반환 할 수 http://example.com/있습니까?


4
매우 중요한 질문에 대해 한 번에 두 가지 질문을합니다. "home_url ()과 site_url ()의 차이점은 무엇입니까?" "WordPress가 설치되어있는 하위 디렉토리없이 URL 루트를 반환하도록하려면 어떻게해야합니까?"라는 질문과 다릅니다.
Volomike

다음 코덱 안내서를 검토하십시오. codex.wordpress.org/… ; codex.wordpress.org/… ; codex.wordpress.org/…
Tara

답변:


51

한 번에 두 가지 질문을합니다.

  1. 차이 무엇 home_url()site_url()?
  2. WordPress가 설치되어있는 서브 디렉토리없이 URL 루트를 리턴하도록하려면 어떻게해야합니까?

답변은 다음과 같습니다. WordPress의 핵심 개발자 인 Andrew Nacin과 함께 서버 테스트를 수행하여 Andrew가 말한 내용을 확인했습니다.

질문 1

wp-admin의 일반> 설정에서 home_url()"사이트 주소 (URL)"필드를 참조하십시오. 혼란 스럽습니까? 예, "사이트 주소"라고 표시되어 있다고 가정 할 수 site_url()있지만 잘못된 것 입니다. 자신의 테스트를 실행하면 볼 수 있습니다. (당신은 일시적으로 떨어질 수 echo H1와 필드 site_url()home_url()당신의 테마의 functions.php의 상단에있는 값.)

한편 site_url()일반> 설정에서 "워드 프레스 주소 (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;
}

A.Nacin과의 토론에 대한 링크가 있습니까?
kaiser April

1
이메일을 통해서였습니다. 죄송합니다. 아, 그리고 편집 해 주셔서 감사합니다. 다음에 구문이 바뀐 것을 기억하겠습니다.
Volomike

8
'사이트 주소 (URL)'= '집'및 '워드 프레스 주소 (URL)'= '사이트 URL'이라는 사실을 깨닫는 데 오랜 시간과 노력이 걸렸습니다. 그들은 분명히 그 레이블을 변경해야합니다.
Jbm

두 번째 질문에 대한 답변이 대박을 맞았습니다!
Devner

7

디렉토리에 WP를 설치하고 도메인 루트의 사이트 홈을 설치하려면 기본 index.php 파일을 도메인 루트로 옮기고 디렉토리 내에서 require 문을 편집해야합니다.

이 프로세스는 여기에 요약되어 있습니다 : WordPress 자체 디렉토리 제공 .


나는 항상 home_url()wp 네트워크 모드에 있기 때문에 항상 사용 합니다. 나는 한 번만 WordPress에 자체 디렉토리를 부여했으며 그것은 단지 내가 좋아하는 것이 아닙니다. 그러나 나는 그러나 wp_content_dir일부 사이트에서 사용합니다 .
xLRDxREVENGEx

다중 사이트에 대한 경험이 없으므로 해당 상황에서이 기능이 어떻게 작동하는지 잘 모르겠습니다. 디렉토리를 정리하고 루트를 어지럽히 지 않기 위해 디렉토리에 WP를 설치하는 것을 선호합니다.
Milo

내 파일 구조는 아마도 가장 가까운 것 중 하나 일 것입니다. home/usr/public_html/site1 home/usr/public_html/site2그런 다음에 wp_content_dir일반적으로
cdn에 있습니다

WP 설치가 유일한 방법이라면 문제가 없지만 수백 개의 파일과 디렉토리가 흩어져있는 다른 사람들의 서버에서 주로 작업하고 있습니다.
Milo

워드 프레스 설치 디렉토리를 루트와 다르게 설정하지 않는 한 site_url ()과 home_url ()이 동일하다는 것을 이해하고 있습니까?
Praveen

3

TLDR :

비표준 설치에서는 WordPress 파일을 웹 사이트 루트의 하위 디렉토리에 둘 수 있습니다.
... 하위 디렉토리 이름
(예 : www.example.comvs www.example.com/wordpress) 을 추가하지 않고도 방문자가 방문자를 사이트의 도메인 (루트) URL에서 WordPress "웹 사이트"에 액세스 할 수 있습니다 .

WP function  | wp_options. | WP constant  | what it represents       | WP Settings Label | Example     
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl`   | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home`      | `WP_HOME`    | browser address bar      | Site Address      | https://www.example.com 

WP 상수 값이 wp_options / WP 설정 값보다 우선합니다.

워드 프레스에 대한 다른 구성

가장에서 표준 워드 프레스 설치, home_urlsite_url같은 값을가집니다.
어쨌든, 그들은 두 가지 다른 것을 나타냅니다.

A의 표준이 아닌 설치, 서로 다른 값을 가질 수있다.

참고 : 가독성을 높이기 위해 프로토콜을 생략했습니다.
이 게시물에서 모든 URL을 https://, http://OR로 //
미리 작성하십시오 (이미 포함하지 않은 경우).

( //는 IS relative프로토콜 중 하나 / 모두 작동 http://또는 https://)

표준 설치 ( "원 클릭"설치 포함)

home_url:은 사용자 주소 표시 줄에 표시된대로 (wordpress) 웹 사이트의 홈 페이지입니다.
site_url:는 워드 프레스 파일이있는 디렉토리입니다.

WordPress의 5 분 설치는 워드 프레스 파일을 설치합니다.이 두 값은 동일합니다. 워드 프레스 파일은 사람들이 귀하의 웹 사이트를 주소 지거나 서버 웹 사이트의 워드 프레스 (블로그) 부분에 사용하려는 폴더에 설치됩니다.

예 1 :
사용자가에서 블로그에 액세스 :: www.example.com
설치된 wordpress 파일 www.example.com또는 서버 웹 사이트의 루트 폴더

home_url=== site_url==="www.example.com"

예 2 :
사용자가 블로그 :: www.example.com/blog
설치된 워드 프레스 파일 www.example.com/blog또는 blog웹 사이트 루트 내의 폴더에 액세스합니다 .

home_url=== site_url==="www.example.com/blog"

이 경우 www.example.com기본 웹 사이트이며 www.example.com/blog블로그의 루트입니다.
여기서 귀하의 블로그는 기본 웹 사이트와 분리되어 있으며 하위 웹 사이트로 작동합니다.
이 경우 기본 웹 사이트는 WordPress에 의해 제어, 정의 또는 스타일 이 지정 되지 않습니다 .
블로그 만 있습니다. 블로그의 모든 URL은www.example.com/blog

참고 : 문서에서 "Wordpress site / website"(단순히 "site / website"가 아닌)는 WordPress 파일이 설치된 디렉토리를 나타냅니다. 이 경우 폴더 www.example.com/blog내의 모든 것 blog입니다. 이 시나리오에서 "WordPress 웹 사이트"는 도메인, 루트 또는 기본 웹 사이트와 동일하지 않습니다. 전체 웹 사이트의 하위 집합입니다. 웹 사이트 안에있는 웹 사이트와 같은 종류. 이 특정 설정에서 용어가 명확하지 않거나 혼란스러워 보일 수 있으므로 이것을 언급합니다.

대체 WordPress 설치 구성

WordPress에 자체 디렉토리 제공 , 섹션 Method II (With URL change).

예를 들어, 많은 사람들이 모든 워드 프레스 파일을 사용하여 웹 사이트의 루트 폴더를 막고 싶지 않습니다.
이들은 하위 디렉토리에 워드 프레스를 설치하려고하지만 파일이 웹 사이트의 서버 루트 루트에 설치된 것처럼 "블로그"또는 "WordPress 웹 사이트"에 액세스 합니다.

이것은 "블로그"가없는 전체 웹 사이트를 작성하고 실행하기 위해 WordPress를 사용할 때 특히 그렇습니다.

예 3 :
사용자는 다음 위치에있는 "블로그"에 액세스합니다 : www.example.com,에
설치된 워드 프레스 파일 www.example.com/wordpress또는 서버 웹 사이트의 루트 폴더.

home_url=== "www.example.com"
site_url==="www.example.com/wordpress"

(참고 :이 구성은 단지 이러한 변수의 값을 변경하여 "상자 밖으로"작동하지 않습니다 그것은 제대로 작동하려면 추가 구성 변경이 필요합니다.)
참조 워드 프레스의 자체 디렉토리주기 , 섹션 Method II (With URL change)이 작업을 수행하는 방법에 대한합니다.

에서는 경우 home_urlsite_url다른 값을 유지해야한다.

이 설정에서, 당신은 당신의 웹 사이트가 원하는 기능을 정확히 것처럼 워드 프레스 파일을 귀하의 웹 사이트에 대한 서버의 루트 디렉토리에 설치 ... 한
서버에서 조직의 목적을 위해,하지만,
당신이 실제로 이라는 폴더에 워드 프레스 파일이 wordpress서버의에 웹 사이트의 루트 디렉토리.

따라서 사용자는 입력하는 www.example.com대신 WordPress 홈페이지를 입력합니다.www.example.com/wordpress

워드 프레스 함수 <-> 데이터베이스 변수 <-> 워드 프레스 상수

이 섹션에서는 위의 예제 3 구성을 가정합니다.
주소 표시 줄 URL : www.example.com
워드 프레스 파일 : / wordpress 디렉토리

(다른 경우는 사소합니다. 모든 변수 / 함수는 동일한 값을 유지 / 반환합니다.)

site_url및 값을 설정하는 방법home_url

먼저 위의 함수에서 반환 한 값을 저장 siteurl하고 home저장 하겠습니다.

1) 일반적으로 워드 프레스 백엔드 / 대시 보드 / 관리자 패널에서이 값을 설정합니다.
Settings -> General ->
siteurl 워드 프레스 주소 : https://www.example.com/wordpress
home 사이트 주소 : https://www.example.com

(여기 뒤에 슬래시를 포함하지 마십시오-다른 곳에 구성됩니다)

2) 또는 WordPress 데이터베이스에서 다음 값을 설정하십시오. table-
wp_options>

`options_name` | `options_value`
----------------------------------------------------
`siteurl`      | `https://www.example.com/wordpress`  
`home`         | `https://www.example.com`  

(여기 뒤에 슬래시를 포함하지 마십시오-다른 곳에 구성됩니다)

3)가 편집 wp-config.php
정의 이러한 특정 상수 당신의 가치를 유지하기 위해
정의 WP_HOMEWP_SITEURL당신의 위쪽으로이 라인을 삽입하여 설정을 wp-config.php파일 :

define('WP_SITEURL','http://example.com/wordpress');  // wordpress core files
define('WP_HOME','http://example.com');               // address bar url

// ** MySQL settings - You can get this info from your web host ** //
...    

(여기 뒤에 슬래시를 포함하지 마십시오-다른 곳에 구성됩니다)

참조 : WP_SITEURLWP_HOME

참고 :이 혼란
(정말, 워드 프레스는 자신의 PHP는 이름과 비슷한 설정을 레이블이 있었다면
같은 Wordpress Site AddressHome Page Address또는 같은 더 명시 적으로 뭔가 location of WordPress Site core files하고 browser url to access WordPress home page)

`WP_SITEURL` <--> `site_url()` <--> `siteurl` <--> Wordpress Address <--> /wordpress   
`WP_HOME`    <--> `home_url()` <--> `home`    <--> Site Address      <--> /

이제 까다로운 곳이 여기 있습니다!

경우 당신이 당신의 그 상수를 정의wp-config.php파일, 중요하지 않습니다 당신이 당신의 데이터베이스 / 설정 페이지에있는 값 것.
실제로 백엔드를 통해이 값을 수정할 수 없습니다 (회색으로 표시됨). 데이터베이스를 편집하여 계속 수정할 수 있지만 wp-config 파일에 상수가있는 동안 사이트에는 영향을 미치지 않습니다.

구성 파일 데이터베이스의 값을 변경하지 않으므로 설정 페이지를 변경하지 않습니다 . 대신 데이터베이스 / 설정 페이지 값 이 무시 됩니다. wp-config의 값은 데이터베이스 설정보다 우선하거나 우선합니다.

그래서 ... 마무리 (TLDR) :

WP function  | wp_options. | WP constant  | what it represents       | WP Settings Label | Example     
-------------------------------------------------------------------------------------------------------------------------------------
`site_url()` | `siteurl`   | `WP_SITEURL` | WordPress files location | WordPress Address | https://www.example.com/wordpress
`home_url()` | `home`      | `WP_HOME`    | browser address bar      | Site Address      | https://www.example.com 

WP 상수 값이 wp_options / WP 설정 값보다 우선합니다.

wp_options 레코드 값과 WP 설정 값이 동일합니다.
정의에 따라 하나를 편집하면 다른 하나가 편집됩니다.
동일한 변수에 액세스하는 방법은 두 가지입니다.

반면에 워드 프레스 상수는 독특하고 독립적입니다.
내부적으로 WordPress (PHP) 상수는 해당 데이터베이스에 우선합니다.
상수가 wp-config에 정의되어 있으면 데이터베이스가 변경 되지 않습니다 .
그러나 내부적으로 WordPress는 항상 db 값 대신 값을 선호합니다 .


3

site_url()home_url()기능이 비슷하며 작동 방식에 혼란을 초래할 수 있습니다.

site_url()함수는 데이터베이스 siteurlwp_options테이블에서 값을 검색 합니다.

이것이 WordPress 코어 파일의 URL입니다.
코어 파일이 /wordpress웹 서버 의 서브 디렉토리 에 존재 하면 값은입니다 http://example.com/wordpress.

home_url()함수는 데이터베이스 homewp_options테이블에서 값을 검색 합니다.

이 주소는 사람들이 워드 프레스 웹 사이트를보기 위해 방문 할 주소입니다.

WordPress 핵심 파일이에 /wordpress있지만 웹 사이트 URL을 http://example.com홈 값으로 사용 하려는 경우 http://example.com.


2

두 번째 질문에 대답하려면 :

Q : 맞다면 http://example.com/ 을 반환하도록 wordpress를받을 수 있습니까?

Giving WordPress에 자체 디렉토리 단계를 수행 하지 않으면 할 수 없습니다 . 이를 사용하면에 워드 프레스 코어 파일을 넣어 의미 /blog또는 /WordPress다음과 index.php루트로.

당신이 자신의 디렉토리 내에 워드 프레스를 넣어하기로 결정하면 당신은 사용하는 것 home_url()에가는에 대한 index.phpsite_url()코어 파일 등을 얻기 위해.

Refrences : Wordpress 자신의 디렉토리 제공을 위한
Codex 용 site_url
Codex 용 home_url
Codex


-1

하위 디렉토리없이 사이트 URL을 얻는 가장 쉬운 방법 ( http://example.com/blog 대신 http://example.com/ )은 백 슬래시 /

예를 들어 다음을 입력하면

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

도메인으로 연결되는 링크를 생성합니다


참여해 주셔서 감사합니다. 불행히도 이것은 OP가 제기 한 질문에 대답하지 않습니다. OP가 요구하는 워드 프레스 기능을 사용해야하는 이유는 여러 가지가 있습니다. OP가 단순히 게시물 편집과 같은 html을 통해 홈페이지에 링크를 추가하려고하지는 않습니다. OP가 PHP 테마 파일 또는 플러그인 파일을 편집하고있을 가능성이 높습니다. 어쨌든 그들은 HTML이 아닌 PHP로 작업하고 있습니다. 마지막으로 OP 는 사이트가 없는 값을 다른 사이트에서 기대 했지만 하위 디렉토리가 리턴 될 것으로 예상 할 수 있습니다. 각 사이트의 WP 구성에 따라 다릅니다. /
SherylHohman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.