WordPress PR

WordPressのURL取得関数「home_url()」と「site_url()」の違いは?

WordPressのURL取得関数「home_url()」と「site_url()」の違いは?
記事内に商品プロモーションを含む場合があります

今回は、WordPressのサイトURLを取得するのに使用する「home_url()」と「site_url()」について説明します。

両者の違いについてもまとめています。
これらの関数の使い方を知りたい方は、ぜひ参考にしてください。

home_url()は「サイトアドレス(URL)」を取得する関数

home_url()は「サイトアドレス(URL)」を取得する関数

home_url()は、「サイトアドレス(URL)」を取得するための関数です。
WordPressの設定画面
ようは、WordPressで作成したWEBサイトのトップページのURLを取得することができます。

オリジナルでテーマを作成・編集する場合、home_url()は非常によく使用する関数の一つです。

例えば、WEBサイトのトップページへリンクを設定する場合には、よくこんな感じで設定します。

<a href=”<?php echo home_url(”); ?>”>

スラッシュ(/)終わりのURLを出力する場合には、このように設定します。

<a href=”<?php echo home_url(‘/’); ?>”>

もし、トップページ以外のURLを設定した場合には、「home_url(‘/blog/’)」とします。
この場合は、このようなURLが出力されます。
↓↓↓↓↓
http://example.com/blog/

site_url()は「WordPressアドレス(URL)」を取得する関数

site_url()は、「WordPressアドレス(URL)」を取得するための関数です。
WordPressの設定画面
「WordPressアドレス(URL)」とは、WordPressをインストールしたURLになります。

例えば、よくこんな感じで使用します。

<a href=”<?php echo site_url(”); ?>”>

もし、スラッシュ(/)終わりのURLを出力する場合には、このように設定します。

<a href=”<?php echo site_url(‘/’); ?>”>

home_url()とsite_url()の違い

home_url()とsite_url()はよく似た関数ですが、実際には異なります。
その違いはこちらです。

home_url()「WordPress アドレス (URL)」を取得
site_url()「サイトアドレス (URL)」を取得
WordPressのURL設定画面

「WordPress アドレス (URL)」と「サイトアドレス (URL)」には、同じURLを設定することが多いです。
その為、home_url()とsite_url()では、取得したURLが同じになることが多いです。

ですが、ユーザーへ公開しているWEBサイトのURLを取得する場合には、home_url()を使用しましょう。

URLを安全に出力する方法

URLを出力する場合、「esc_url()」を使用しましょう。
esc_url()は、URLをエスケープするための関数で、home_url()やsite_url()とセットで使用します。

<a href=”<?php echo esc_url( home_url(‘/’) ); ?>”>
<a href=”<?php echo esc_url( site_url(‘/’) ); ?>”>

これにより、セキュアなURLが出力されます。
例えば、URLに悪意のあるJavascriptのコードが組み込まれていたとしても、これで安全に呼ぼ出すことが出来ます。

bloginfo()はの仕様には注意

WordPressでURLを取得できる関数に「bloginfo()」もあります。

例えば、「bloginfo(‘home’)」「bloginfo(‘siteurl’)」「bloginfo(‘url’)」とパラメーターを設定することで、「サイトアドレス(URL)」を取得することができます。

ただ、上記で紹介したパラメーター「home」「siteurl」「url」は、廃止されています。
トップページへのリンクを設定する場合には、home_url()が推奨されているので、こちらを使用しましょう。

また、「bloginfo(‘wpurl’)」とパラメーターを設定すると「WordPressアドレス(URL)」を取得できます。
ただ、「wpurl」というパラメーターは推奨されていないので、こちらもsite_url()を使用しましょう。