WordPressのhome_url完全ガイド|site_urlとの違い・使い分け・注意点まで

WordPress

home_urlとは?WordPressでの役割と意味

home_url() は、WordPressにおけるサイトのホームURL(トップページのURL)を取得するための関数です。
テンプレートやプラグインの開発時、またカスタムリンクを出力したい場面でよく使われます。

例えば、以下のように記述することで、サイトのURL(例:https://webdeza.com/)を取得できます。

<?php echo home_url(); ?>

home_urlで取得されるURLとは?

home_url() で取得されるのは、WordPress管理画面の
[設定]>[一般]>「サイトアドレス(URL) に設定されているURLです。

一方、WordPressのシステムがインストールされているディレクトリのURL(つまり「WordPressアドレス」)を取得したい場合は、site_url() を使用します。

home_urlの主な用途
  • トップページへのリンクをテンプレートに埋め込む
  • リダイレクト処理で使う
  • カスタムナビゲーションやパンくずリストのURL生成
  • 投稿・固定ページでショートコードとして使用(後述します)

引数を渡すことでサブパス付きURLも取得可能です

<?php echo home_url('/contact/'); ?>

このように書くと、「https://webdeza.com/contact/」というURLを自動的に生成してくれます。
スラッシュの有無も自動で整えてくれるので便利です。

site_urlとの違いと使い分けのポイント

WordPressには似た名前の関数として site_url() がありますが、home_url() とは取得するURLの意味が異なります。
違いを正しく理解し、使い分けましょう。

1.取得するURLの違い

home_url()

「サイトアドレス(URL)」を取得します。
これはサイトのトップページのURLで、ユーザーに訪れてほしいページのURLです。
(例)https://webdeza.com

site_url()

「WordPressアドレス(URL)」を取得します。
これはWordPressのコアファイルが置かれている場所のURLです。
(例)https://webdeza.com/wordpress

使い分けの例

home_url() を使う場面
  • ユーザーがアクセスするトップページやホームにリンクを貼りたい時
  • ナビゲーションメニューのホームリンク
  • 投稿や固定ページからホームへのリンクを作成する場合
site_url() を使う場面
  • 管理画面やログインページへのリンクを作成する時
  • WordPress本体のファイルパスが関係する処理(プラグインやテーマの開発時)

home_urlの基本的な使い方:コード例あり

home_url() はWordPressでサイトのトップページURLを取得する際に非常に便利な関数です。
基本的な使い方をコード例と一緒に解説します。

基本的なURL取得

何も引数を渡さずに呼び出すと、サイトのホームURLをそのまま取得します。

<?php echo home_url(); ?>

// 出力例
https://webdeza.com

サブパスを付けてURLを生成する

引数に文字列(パス)を渡すと、そのパスがホームURLの後ろに追加されます。
スラッシュ(/)の有無は自動調整されます。

<?php echo home_url('/contact/'); ?>

// 出力例
https://webdeza.com/contact/

第二引数でスキーム(http/https)を指定できる

home_url() は第2引数でURLのスキーム(http, https, relativeなど)を指定することが可能です。

<?php
// httpsスキームで取得
echo home_url('/', 'https');

// relativeスキーム(相対パス)で取得
echo home_url('/', 'relative');
?>

テーマファイルでの活用例

例えば、メニューやリンクのURLを動的に出力したいときに便利です。

<a href="<?php echo home_url(); ?>">ホームへ戻る</a>

<a href="<?php echo home_url('/about/'); ?>">会社情報ページ</a>

投稿・固定ページでhome_url()を使う方法

WordPressでは、投稿や固定ページ内にはセキュリティの関係上、phpコードは使用できません。
サイトのドメインやディレクトリが変わった場合にも対応できるサイトアドレスを出力する以下のコードは便利なので投稿や固定ページの本文でも使用していきたいです。

phpを使用したい場合は、ショートコードとして登録しておくと投稿や固定ページでも使用できます。
「function.php」に以下を追記します。

/* HOMEのURLをショートコードで表示
**********************************************/
add_shortcode( 'hurl', 'shortcode_homeurl' );
function shortcode_homeurl( $atts, $content = '' ) {
	return esc_url( home_url() ).$content;
}

投稿や固定ページの本文には、以下を入力するとphpで「home_url( )」と入力した場合と同じコードが出力されます。

[hurl]

例えば、アバウトページにリンクしたい場合は、以下のようなHTMLになります。

<a href="[hurl]/about/">アバウトページにリンク</a>

これで、サイトアドレスが変わった時もリンクの修正の必要がありません。

home_url使用時の注意点

WordPressの便利な関数 home_url() ですが、使用する際にはいくつか注意しておきたいポイントがあります。
これらを理解しておかないと、思わぬトラブルや誤動作の原因になることがあります。

スラッシュの二重付与に注意

home_url() にパスを渡す場合、引数の先頭にスラッシュを付けても付けなくても自動的に補正されますが、テンプレートタグを組み合わせる際に手動でスラッシュを足すと、URLが「//」のように二重になることがあります。

投稿や固定ページに直接PHPは書けない

home_url() はPHP関数のため、投稿や固定ページの本文内に直接記述しても動作しません。
投稿内でURLを使いたい場合はショートコード化やプラグインを利用しましょう。

キャッシュやパーマリンク設定の影響に注意

サイトのパーマリンク設定やキャッシュプラグインの影響で、home_url() が返すURLが一時的に古いものや不正なものになる場合があります。
サイトのURLを変更した場合は、パーマリンクの再設定やキャッシュクリアを必ず行いましょう。

home_urlが効かない・動作しない時の対処法

WordPressの home_url() 関数は通常問題なく動作しますが、稀に正しくURLを取得できない、期待通りに動かないケースがあります。
そんな時の原因と対処法をまとめました。

キャッシュの影響を疑う

サイト全体やサーバー、ブラウザのキャッシュが原因で、古いURLや不正なURLが表示される場合があります。
以下を試してみましょう。

  • ブラウザのキャッシュをクリアする
  • WordPressキャッシュプラグインのキャッシュをクリアまたは一時停止する
  • サーバーのキャッシュやCDN(Cloudflareなど)があればクリア

WordPressの「サイトアドレス(URL)」設定を確認

home_url() はWordPressの管理画面の
[設定]>[一般]>「サイトアドレス (URL)」 に設定されたURLを返します。
ここが間違っていると、正しいURLが取得できません。

functions.phpやプラグインの干渉をチェック

テーマの functions.php や使用中のプラグインが home_url フィルターを使ってURLを書き換えている場合があります。

add_filter('home_url', 'your_custom_function');

こうしたコードが原因でURLが変わっている場合は、そのコードを見直す必要があります。

マルチサイト環境の設定ミス

マルチサイトではネットワーク設定やサイトごとの設定が複雑になるため、home_url() が意図したURLを返さないことがあります。
管理画面のサイト設定を再確認してください。

PHPのエラーやテーマの不具合を疑う

PHPのエラーやテーマファイルの不具合で home_url() が正常に動作しないケースもあります。

  • WP_DEBUG を有効にしてエラーログを確認
  • テーマをデフォルトテーマ(Twenty Twenty-Threeなど)に切り替えて確認

投稿・固定ページ内でPHPを使おうとしている

投稿や固定ページの本文内に直接 <?php echo home_url(); ?> と書いても反映されません。
ショートコード化や専用プラグインを利用しましょう。

まとめ:WordPressのhome_url()を正しく理解して活用しよう

WordPressの home_url() は、サイトのトップページURLを取得するための重要な関数です。
正しく使うことで、メニューやリンク、リダイレクトなど様々な場面で役立ちます。

この記事のポイントまとめ

  • home_url()とは
    サイトアドレス(URL)を取得する関数。ユーザーが訪れるトップページのURLを返します。
  • site_url()との違い
    site_url()はWordPress本体が設置されているURLを取得。使い分けが重要。
  • 基本的な使い方
    引数にパスを入れてサブURLも簡単に作成できる。第二引数でhttp/httpsのスキーム指定も可能。
  • 投稿・固定ページでの使用
    直接PHPは書けないため、ショートコード化やプラグインを利用するのがおすすめ。
  • 使用時の注意点
    マルチサイト環境、スラッシュの重複、SSL対応、キャッシュの影響などに注意。
  • 動作しない場合の対処法
    キャッシュクリア、サイトURL設定確認、テーマ・プラグイン干渉チェックなどを順に確認。

この記事を書いた人
管理人

2012年にWebデザインの勉強を始め、2013年より制作会社に勤務。
これまでに500件以上のWebサイト制作・運用に携わってきました。
現在も制作会社に勤務しながら、Webデザインスクールのトレーナーとしても後進の育成に取り組んでいます。
WordPressやデザインの実践的なノウハウを、初心者にもわかりやすく発信できるよう試行錯誤しています。

管理人をフォローする
WordPress
管理人をフォローする

コメント

タイトルとURLをコピーしました