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
非常に重要な質問について、2つの質問を同時に行っています。「home_url()とsite_url()の違いは何ですか?」に対する答え 「インストールされているサブディレクトリなしでURLルートを返すようにWordPressを取得するにはどうすればよいですか?」という質問とは異なります。
-Volomike

次のコーデックスガイドを確認してください:codex.wordpress.org/… ; codex.wordpress.org/… ; codex.wordpress.org/…–
タラ

回答:


51

一度に2つの質問をしています:

  1. 違いは何だhome_url()とはsite_url()
  2. WordPressがインストールされているサブディレクトリなしでURLルートを返すようにするにはどうすればよいですか?

これが答えです。WordPressのコア開発者であるAndrew Nacinに確認し、Andrewが私に言ったことを確認するためにいくつかのサーバーテストを実行しました。

質問1

[全般]> [wp-adminの設定]で、[ home_url()サイトアドレス(URL)]というラベルのフィールドを参照します。混乱しますか?うん、それはあなたが推測するかもしれないので「サイトアドレス」と言うsite_url()が、あなたは間違っているだろう。独自のテストを実行すると表示されます。(テーマのfunctions.phpの上部にあるecho H1フィールドsite_url()home_url()値を一時的にドロップできます。)

一方、site_url()[全般]> [設定]の[WordPressアドレス(URL)]というラベルのフィールドを参照します。

したがって、URLでプラグインのフォルダーパスを呼び出して画像を読み込む、またはテーマのフォルダーパスを呼び出して画像を読み込むなど、物理パスがどこにあるかを参照したい場合は、実際に他の関数を使用する必要があります-見てplugins_url()get_template_directory_uri()

site_url()いつもあなたがタックしてサイトに到達できる場所になり/wp-adminながら、最後にはhome_url()確実にこの場所ではないでしょう。

home_url()[一般]> [設定]「サイトアドレス(URL)」フィールドを設定することによって、自分のホームページを設定しているところだろう。

質問2

私は私のブログを配置しているのであれば、http://example.com/blogexample.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との議論へのリンクはありますか?
カイザー

1
メール経由でした。ごめんなさい。ああ、編集に感謝します-次回構文が変わることを覚えています。
-Volomike

8
「サイトアドレス(URL)」=「ホーム」および「WordPressアドレス(URL)」=「サイトURL」であることに気付くまでに、非常に長い時間と多大な苦労がありました。彼らは間違いなくそれらのラベルを変更する必要があります。
JBM 14年

2番目の質問に対する答えは大当たりです!
デブナー

7

WPをドメインルートのサイトホームにインストールする場合、メインのindex.phpファイルをドメインルートに移動し、ディレクトリ内を指すようにrequireステートメントを編集する必要があります。

このプロセスは、ここで概説されていますワードプレスに独自のディレクトリを与えます


私はhome_url()WPネットワークモードにいるので、常に使用しています。WordPressに独自のディレクトリを1度だけ指定しただけで、それは私の好みではありませんでした。しかし、私はwp_content_dirいくつかのサイトで使用しています。
xLRDxREVENGEx

私はマルチサイトの経験がないので、そのような状況でこのようなものがどのように機能するかはよくわかりません。WPをディレクトリにインストールするのは、物事を整理してルートを乱雑にしないためです。
ミロ

私のファイル構造は、おそらく最も近いものの1つです。home/usr/public_html/site1 home/usr/public_html/site2などなど、wp_content_dir通常はcdnにあります
xLRDxREVENGEx

WPのインストールのみが問題ない場合でも、私はほとんど何百ものファイルとディレクトリが散らばっている他の人々のサーバーで作業しています。
ミロ

ワードプレスのインストールディレクトリをルートとは異なるものに設定しない限り、site_url()とhome_url()は同じであると理解していますか?
プラヴィーン

3

TLDR:

非標準インストールでは、WordPressファイルをWebサイトのルートのサブディレクトリに配置できます。
...さらに、訪問者への訪問者は、サブディレクトリ名を追加せずに、サイトのドメイン(ルート)URLからWordPress "ウェブサイト"にアクセスできます
:(例:www.example.comvs www.example.com/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設定値よりも優先されます。

WordPressのさまざまな構成

ほとんどでは、標準のWordPressのインストール、home_urlおよびsite_url同じ値を持つことになります。
とにかく、それらは2つの異なるものを表します。

では、非標準のインストール、それらは異なる値を有することができます。

注:読みやすいように、回答ではプロトコルを省略しています。
このポスト、PREPEND EVERY URLで: https://http://OR //
(私はすでにそれを含まない場合)。

//あるrelativeプロトコルのいずれか/両方のために動作しますhttp://またはhttps://

標準インストール(「ワンクリック」インストールを含む)

home_url:は、ユーザーのアドレスバーに示されている(wordpress)Webサイトのホームページです。
site_url:は、wordpressファイルが置かれているディレクトリです。

WordPressの5分間のインストールでは、これら2つの値が同じワードプレスファイルがインストールされます。ワードプレスファイルは、WebサイトまたはサーバーのWebサイトのワードプレス(ブログ)部分のアドレス指定に使用するのと同じフォルダーにインストールされます。

例1:
ユーザーはブログにアクセスします:www.example.com
インストールされたwordpressファイル:www.example.com、またはサーバーのWebサイトのルートフォルダー。

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

例2:
ユーザーがであなたのブログにアクセスしますwww.example.com/blog
にインストールワードプレスのファイル:www.example.com/blog、またはにblogフォルダ、Webサイトのルート内。

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

この場合www.example.com、メインWebサイトでありwww.example.com/blog、ブログのルートです。
ここでは、ブログはメインWebサイトから分離され、メインWebサイトのサブセットとして機能します。
この場合、メインWebサイトはWordPressによって制御、定義、またはスタイル設定されません
あなたのブログだけです。ブログのすべてのURLが処理されますwww.example.com/blog

注:ドキュメントでは、「Wordpress site / website」(単に「site / website」ではなく)は、WordPressファイルがインストールされているディレクトリを指します。この場合、それはwww.example.com/blog- blogフォルダ内のすべてです。このシナリオの「WordPress Webサイト」は、ドメイン、ルート、またはメインWebサイトとは異なります。これはWebサイト全体のサブセットです。ウェブサイト内のウェブサイトのようなもの。この特定の設定を考えると、用語が不明確または混乱しているように見えるため、これについて言及します。

別のWordPressインストール構成

WordPressに独自のディレクトリ、セクションを与えるMethod II (With URL change)

たとえば、多くの人は、すべてのワードプレスファイルでWebサイトのルートフォルダーを詰まらせたくありません。
彼らはワードプレスをサブディレクトリにインストールしたいが、ファイルがウェブサイトのサーバーのルートのルートにインストールされたかのように「ブログ」または「ワードプレスのウェブサイト」にアクセスしたい

これは、WordPressを使用して、「ブログ」さえも持たないWebサイト全体を構築および実行する場合に特に当てはまります。

例3:
ユーザーは、次の場所にある「ブログ」にアクセスします:www.example.com
インストールされたwordpressファイル:www.example.com/wordpress、またはサーバーのWebサイトのルートフォルダー。

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

(注:この設定は、単にこれらの変数の値を変更することで、「箱から出して」動作しませんそれが正常に動作するために、追加の設定変更が必要です。)
を参照してくださいワードプレスに独自のディレクトリを与える、というセクションMethod II (With URL change)これを行う方法のために。

、この場合home_urlsite_url異なる値を保持する必要があります。

この設定では、あなたのウェブサイトにしたい機能を正確にいるかのように WordPressのファイルは、あなたのウェブサイトのためのサーバのルートディレクトリにインストールさ...れた
サーバー上の組織的な目的のために、しかし、
あなたが実際に呼ばれるフォルダにWordPressのファイルを持っているwordpressサーバの中でWebサイトのルートディレクトリ。

そのため、ユーザーはwww.example.comWordPressホームページを取得するために入力するのではなく、www.example.com/wordpress

wordpress関数<->データベース変数<-> Wordpress定数

このセクションでは、上記の例3の構成を想定しています。
アドレスバーのURL:www.example.com
ワードプレスファイル:/ wordpressディレクトリ

(他のケースは簡単です:すべての変数/関数は同じ値を保持/返します。)

site_urlおよび の値を設定する方法home_url

まず、上記の関数によって返された値siteurlhome保存します

1)通常、これらの値はWordPressバックエンド/ダッシュボード/管理パネルで設定します:
Settings -> General ->
siteurl WordPressアドレス: https://www.example.com/wordpress
home サイトアドレス: https://www.example.com

(ここに末尾のスラッシュを含めないでください-他の場所で構成されます)

2)あるいは、これらの値をWordPressデータベースに設定します:
wp_optionsテーブル->

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

(ここに末尾のスラッシュを含めないでください-他の場所で構成されます)

3)あなたの編集wp-config.php
を定義し、これらの特定の定数を自分の価値観を保持するために
定義WP_HOMEし、WP_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_SITEURLおよびWP_HOME

注:これは混乱を招きます
(WordPressが
Wordpress Site Addressand などのHome Page Address明示的な設定location of WordPress Site core filesや、andなどのより明示的な設定をラベル付けしてくれることを願っていますbrowser url to access WordPress home page

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

さて、ここが難しいところです!

IFあなたにこれらの定数を定義した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設定値は同じです。
定義により、一方を編集すると他方が編集されます。
同じ変数にアクセスする方法は2つだけです。

一方、WordPressの定数は一意で独立しています。
内部的に、WordPress(PHP)定数は、対応するdbをオーバーライドします。
定数がwp-configで定義されている場合、データベース変更されませ
ただし、内部的にWordPressは常にdbの代わりにその値を優先/使用します。


3

機能が似ており、彼らがどのように動作するかで混乱を招くことができます。 site_url()home_url()

site_url()関数は、値の値を取得するsiteurlにはwp_options、データベース内のテーブル。

これは、WordPressコアファイルへのURLです。
コアファイルが/wordpressWebサーバーのサブディレクトリに存在する場合、値はになりますhttp://example.com/wordpress

このhome_url()関数は、データベースhome内のwp_optionsテーブルの値を取得します。

これは、WordPress Webサイトを表示するために人々に訪問してもらいたいアドレスです。

WordPressのコアファイルがで存在する場合/wordpressがありますが、あるためにあなたのウェブサイトのURLを望んでhttp://example.comホームの値でなければなりませんhttp://example.com


2

2番目の質問に答えるには:

Q:それが正しい場合、ワードプレスにhttp://example.com/を返すようにできますか?

Giving WordPressに独自のディレクトリ手順を実行しない限り、できません。これを使用すると、あなたにWordPressのコアファイルを置く意味/blog/WordPress、その後、index.phpあなたのルートに。

あなたは、独自のディレクトリ内のワードプレスを置くことにしたなら、あなたは使用しhome_url()に行くためindex.phpsite_url()コアファイルと、そのようなを取得するため。

借換え:
Codex for site_url
Codex for home_url
Codex for Wordpress Own Directory


-1

サブディレクトリなしでサイトのURLを取得する最も簡単な方法(http://example.com/blogの代わりにhttp://example.com/)、バックスラッシュ/を使用するだけです

たとえば、次のように入力した場合:

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

ドメインへのリンクが作成されます


ご参加いただきありがとうございます。残念ながら、これはOPによって提起された質問には答えません。OPが求めるワードプレス機能を使用する必要がある理由はたくさんあります。OPが、投稿を編集するなどして、htmlを介してホームページにリンクを追加したいだけではありません。OPがphpテーマファイルまたはプラグインファイルを編集している可能性が高くなります。いずれにせよ、彼らはhtmlではなくphpで作業しています。最後に、OPは一方で期待せずに値を/ため、このサイト、別のサイト上で、OPはあり期待してサブディレクトリが返されます。各サイトのWP構成に依存します。
シェリルホーマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.