WordPressのサイトURLは、一般的にトップページのURLになります。当サイトの場合は「https://tcd-theme.com」がサイトURLになりますね。

当記事では、このURLを取得できる「home_url()」の使い方について解説していきます。

home_url()とは?

サイトURL(トップページのURL)を取得できるWordPressの関数です。「http」か「https」かも自動で判別してくれるので非常に便利です。

home_url( $path, $scheme );
$path サイトURLの末尾に追加する文字列
$schema URLのスキーム名(省略すれば自動的にhttpやhttpsを判別してくれる)

基本的に使うのは第一引数のみです。それでは具体的な使い方をみていきましょう。

  • 最も基本的な使い方
  • 下層ページのURLを取得する方法
  • 使用例(aタグのリンク先に指定)

最も基本的な使い方

まずは、サイトのURLを出力する基本的な使い方をご紹介します。トップページのURLを出力する時は、引数をすべて省略して使います。

// トップページのURL(https://example.com)を出力
echo home_url();

// 出力結果
// https://example.com

ただし、home_url()の内部では、URLを取得するまでにエスケープ処理(URLのプロトコルチェクや不適切な文字の削除・変換)を行いません。このままでは、不適切な文字列が含まれていた場合にリンクが機能しなくなります。

そのため、home_url()を利用する時は、以下のように、エスケープ処理を行う関数「esc_url()」とセットで利用しましょう。これでより安全に利用できます。

// esc_urlでURLのエスケープ処理を行う
echo esc_url( home_url() );

また、home_url()で取得したURLの末尾には「/」を含みません。もし「https://example.com/」のような形式で出力するなら、引数に「/」を指定してください。

// 末尾にスラッシュを付ける
echo esc_url( home_url( '/' ) );

// 出力結果
// https://example.com/

これが最も基本的な使い方になります。

下層ページのURLを取得する方法

home_url()は、トップページ以外のページのURLを取得するのにも利用できます。例えば、特定の固定ページのURLを取得したい時などが当てはまります。

そんな時は、引数にトップページのURL(https://example.com)以降の文字列を指定しましょう。(固定ページならスラッグを指定)

// 固定ページのスラッグが「test-page」の場合
echo esc_url( home_url( '/test-page' ) );

// 出力結果
// https://example.com/test-page

こちらは手動でURLを取得できますが、スラッグを変更したときに対応するのが面倒です。投稿や固定ページのIDからURLを取得できる関数「get_the_permalink()」を利用する方法もありますので、以下も参考にしてください。

使用例(aタグのリンク先に指定)

ここまで解説したのは、home_url()の基本仕様です。実際にHTMLタグを含めた使い方を以下に紹介しておきますので、参考にしてください。

// aタグにリンク先を指定する
<a href="<?php echo esc_url( home_url( '/' ) ); ?>">
  <?php // リンクテキスト ?>
</a>

一般的なテーマ開発では、このようにトップページに遷移するリンク先に使うことが多いですね。

home_url()とsite_url()の違いは?

「home_url()」と似た挙動をする関数に「site_url()」が存在します。どちらも同じようなURLを返しますが、取得するアドレスが異なります。

WordPressアドレスとサイトアドレス

site_url() 一般設定 > WordPress アドレス (URL)を取得
home_url() 一般設定 > サイトアドレス (URL)を取得

WordPressでは、一般的にサイトアドレスとWordPress アドレスに同じURLを記入することが多いです。すると、どちらの関数も同じURLを返してしまうため、混同する原因となってしまうんですね。

WordPressアドレスは、WordPressをインストールした場所を示すアドレスのため、トップページのURLを取得する時は「home_url()」を使いましょう。

まとめ

今回は、home_url()の使い方とsite_url()との違いについて解説しました。正直なところ、一般的なテーマ開発では「site_url()」を使うことがほとんどないため「home_url()」を優先的に覚えておきましょう。

なお、サイトURLとセットで覚えておきたいのが、サイトのタイトルとキャッチフレーズの取得です。以下にその方法を解説してますので、合わせてご覧ください。