web-dev-qa-db-ja.com

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

それが正しければ、ワードプレスにhttp://example.com/を返させることができますか?

59
Praveen

あなたは同時に二つの質問をしています。

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

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

質問1

一般> wp-adminの設定で、home_url()は "Site Address(URL)"というラベルのフィールドを参照します。 紛らわしいですね。 ええ、それは "Site Address"と言っているのであなたはsite_url()を仮定するかもしれません、しかし あなたは間違っているでしょう 。あなた自身のテストを実行すればわかります。 (あなたのテーマのfunctions.phpの先頭にsite_url()home_url()の値を持つecho H1フィールドを一時的に削除することができます。)

一方、site_url()はGeneral> Settingsの中の "WordPress Address(URL)"というラベルの付いたフィールドを参照します。

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

site_url()は常に最後に/wp-adminを付けることでサイトにアクセスできる場所になりますが、home_url()は確実にこの場所になるとは限りません。

home_url()は、General> Settingsの「Site Address(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;
}
48
Volomike

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

このプロセスの概要は次のとおりです。 WordPressに独自のディレクトリを付与する

7
Milo

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

Q:それが正しければ、wordpressから http://example.com/ を返すことができますか?

WordPressに独自のディレクトリを与える の手順を踏まない限り、できません。これを使用することは、WordPressのコアファイルを/blogまたは/WordPressに配置してから、index.phpを自分のルートに配置することを意味します。

WordPressをそれ自身のディレクトリの中に置くことにしたなら、あなたはindex.phpに行くためにhome_url()を使い、コアファイルなどを得るためにsite_url()を使うでしょう。

参考文献:
site_urlのコーデックス
home_urlのコーデックス
Wordpress自身のディレクトリを提供するためのコーデックス

2
xLRDxREVENGEx

site_url()関数とhome_url()関数は似ており、それらがどのように機能するかについて混乱を招く可能性があります。

site_url()関数は、データベースのwp_optionsテーブルにあるsiteurlの値を取得します。
これはWordPressのコアファイルへのURLです。
あなたのコアファイルがあなたのWebサーバ上のサブディレクトリ/wordpressに存在する場合、値はhttp://example.com/wordpressになります。

home_url()関数は、データベースのwp_optionsテーブルにあるhomeの値を取得します。
これは、WordPress Webサイトを閲覧するために他のユーザーにアクセスしてもらいたいアドレスです。

WordPressのコアファイルが/wordpressに存在していても、あなたのWebサイトのURLをhttp://example.comにしたい場合は、homeの値をhttp://example.comにしてください。

2
Nanhe Kumar