WordPressでサイトを構築・カスタマイズする際、サイト名やキャッチコピー、サイトのURLといった基本情報を動的に出力するために欠かせないのがbloginfo()関数です。
この関数は、管理画面の「設定」で指定した情報をテンプレートファイル内で簡単に呼び出すことができるため、テーマ開発における必須知識といえます。
2026年現在のモダンな開発環境においても、クラシックテーマやハイブリッドテーマ、または特定のブロック開発の裏側で頻繁に利用されています。
本記事では、bloginfo関数の基本的な使い方から、指定できるパラメーターの一覧、さらには実務で役立つ具体的な活用例まで詳しく解説します。
bloginfo関数とは
WordPressのbloginfo()は、サイトのさまざまな設定情報をブラウザに直接出力するための関数です。
この関数の最大の特徴は、「取得した値をその場でecho(表示)する」という点にあります。
通常、PHPでデータを扱う際は「値を取得して変数に代入する」というステップを踏むことが多いですが、bloginfo()はテーマのHTML構造の中でそのまま情報を表示させたい場合に非常に効率的です。
例えば、サイトのタイトルをヘッダーに表示させたい場合、この関数に特定のパラメーターを渡すだけで、データベースから最新の情報を引き出して表示してくれます。
基本的な構文
bloginfo()の構文は非常にシンプルです。
<?php bloginfo( $show ); ?>
引数となる$showには、取得したい情報の種類をキーワード(文字列)で指定します。
もし引数を空のまま呼び出した場合は、デフォルトでサイトのタイトル(name)が表示される仕様になっています。
bloginfo関数で取得できるパラメーター一覧
bloginfo関数には多くのパラメーターが存在します。
それぞれのパラメーターがどのような情報を出力するのか、以下の表にまとめました。
| パラメーター名 | 出力される内容 | 備考 |
|---|---|---|
'name' | サイトのタイトル | 設定 > 一般 > サイトのタイトル |
'description' | サイトのキャッチコピー | 設定 > 一般 > キャッチコピー |
'wpurl' | WordPress のインストール済み URL | 設定 > 一般 > WordPress アドレス (URL) |
'url' | サイトの表示用 URL | 設定 > 一般 > サイトアドレス (URL) |
'admin_email' | 管理者のメールアドレス | 設定 > 一般 > 管理者メールアドレス |
'charset' | サイトの文字エンコーディング | 通常は 「UTF-8」 |
'version' | WordPress の現在のバージョン | セキュリティ上、露出には注意が必要 |
'html_type' | HTML の Content-Type | 通常は 「text/html」 |
'text_direction' | テキストの書字方向 | 「ltr」(左から右) や 「rtl」(右から左) |
'language' | サイトの言語設定 | 日本語設定なら 「ja」 |
推奨されない(非推奨)パラメーターへの注意
かつてのWordPress開発では、'stylesheet_url'や'template_url'といったパラメーターも頻繁に使われていました。
しかし、2026年現在のベストプラクティスとしては、これらは非推奨に近い扱いとなっており、代わりに専用の関数を使用することが強く推奨されています。
例えば、スタイルシートのURLを取得する場合はget_stylesheet_uri()を使用し、テーマディレクトリのURLを取得する場合はget_template_directory_uri()を使用するのが標準的です。
これらはより高速で、子テーマの階層構造なども正しく考慮するように設計されているためです。
bloginfo関数の具体的な使い方例
それでは、実際のテーマ開発でどのようにbloginfo()が記述されるのか、具体的なコード例を見ていきましょう。
1. サイトタイトルとキャッチコピーを表示する
最も一般的な使い方は、ヘッダー部分での表示です。
<header>
<h1><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
<p><?php bloginfo('description'); ?></p>
</header>
<header>
<h1><a href="https://example.com/">マイブログ</a></h1>
<p>WordPressを学ぶための技術ブログです。</p>
</header>
このように、URLとサイト名を組み合わせてリンクを作成する手法は、ほぼすべてのクラシックテーマで採用されています。
2. metaタグで文字コードを指定する
HTMLの<head>セクション内で文字コードを出力する際にも活用されます。
<meta charset="<?php bloginfo('charset'); ?>">
<meta charset="UTF-8">
直接「UTF-8」と記述しても動作はしますが、bloginfo('charset')を使用することで、WordPress本体の設定と同期させることができ、保守性が高まります。
3. 言語属性の指定
サイト全体の言語設定を<html>タグに反映させる場合です。
<html <?php language_attributes(); ?>>
ここで紹介しているlanguage_attributes()関数は、内部的にbloginfo('language')などの情報を利用して、適切な言語属性(lang="ja"など)を出力してくれます。
bloginfo() と get_bloginfo() の違い
WordPressには、bloginfo()とよく似た関数でget_bloginfo()というものがあります。
この2つの使い分けを理解することは、PHPプログラミングにおいて非常に重要です。
bloginfo() は「出力」する
bloginfo()は、関数の中でechoを実行します。
そのため、HTMLの中に直接埋め込んで表示させるのに向いています。
get_bloginfo() は「値を返す(リターン)」
一方で、get_bloginfo()は値をブラウザに出力せず、PHPプログラムの中で「値」として保持します。
そのため、変数に代入したり、他の関数に渡したり、条件分岐に使ったりする場合に適しています。
<?php
// 値を変数に代入する
$site_title = get_bloginfo('name');
// 条件分岐で使用する
if ( $site_title === '特定のサイト名' ) {
echo 'お帰りなさい、管理者様。';
}
// 他の関数の中で使用する
echo esc_html( get_bloginfo('name') );
?>
どちらを使うべきか?
基本的には、「ただ表示するだけなら bloginfo()」、「加工したりロジックに使ったりするなら get_bloginfo()」という使い分けで問題ありません。
ただし、セキュリティの観点から、明示的にエスケープ処理(安全なデータに変換すること)を行いたい場合は、get_bloginfo()をesc_html()などの関数と組み合わせて使うのが2026年現在の標準的なプログラミングスタイルです。
bloginfo関数の内部動作とパフォーマンス
bloginfo()は便利な関数ですが、内部的には多くのフィルターフックを通っています。
具体的には、実行される際に関数内部でget_bloginfo()が呼び出され、さらにその中でapply_filters('bloginfo', ...)という処理が行われます。
フィルターフックによるカスタマイズ
開発者はbloginfoフィルターを利用することで、関数が返す値を動的に書き換えることが可能です。
例えば、特定の条件下でのみサイト名の末尾に「(メンテナンス中)」という文字を付け加えたいといった要望に応えることができます。
function custom_bloginfo_name( $output, $show ) {
if ( $show === 'name' && is_user_logged_in() ) {
$output .= ' (ログイン中)';
}
return $output;
}
add_filter( 'bloginfo', 'custom_bloginfo_name', 10, 2 );
このような拡張性の高さが、単なる静的なテキスト表示との大きな違いです。
パフォーマンスへの影響
bloginfo関数が呼び出されるたびにデータベースへのクエリが発生するわけではありません。
WordPressの内部では、一度取得したオプション情報はキャッシュされる仕組みになっているため、同一ページ内で何度も呼び出してもパフォーマンスが著しく低下することはありません。
ただし、不必要に多くの箇所で呼び出すのはコードの可読性を下げる原因にもなります。
共通して使う情報は一度変数に格納しておくといった工夫も、大規模なテーマ開発では検討に値します。
2026年におけるbloginfoの役割とブロックテーマ
近年のWordPressは、フルサイト編集(FSE)に対応した「ブロックテーマ」が主流となっています。
ブロックテーマでは、PHPファイルを直接編集する機会が減り、代わりに「サイトタイトルブロック」や「サイトキャッチコピーブロック」を使用して視覚的に配置を行うようになりました。
ブロックテーマでの扱い
ブロックテーマを使用している場合、エディター上で配置した「サイトタイトルブロック」は、内部的にはbloginfo('name')相当の情報を出力しています。
したがって、ユーザーがPHPコードを書く機会は減っていますが、「どこからその情報が来ているのか」を理解しておくことは、トラブルシューティングにおいて依然として重要です。
ハイブリッドテーマやカスタムブロック開発
一方で、特定の要件を満たすために独自のカスタムブロックをPHPで作成する場合や、既存のクラシックテーマをメンテナンスする場合には、依然としてbloginfo()は現役の関数です。
特に設定情報をJavaScript側(Reactなど)に渡したい場合、サーバーサイドのレンダリングプロセスでget_bloginfo()を使用してデータを抽出し、JSON形式で出力するといった手法が取られます。
セキュリティ対策とエスケープ処理
WordPress開発において最も重要なのがセキュリティです。
bloginfo()自体はWordPressのコア関数であり、出力される値はある程度信頼されていますが、「出力時には常にエスケープする」という原則を守ることで、より堅牢なサイトを構築できます。
前述の通り、bloginfo()は直接出力してしまうため、エスケープを挟む余地がありません。
そのため、安全性を重視するプロジェクトでは以下のような記述が好まれます。
<title><?php echo esc_html( get_bloginfo( 'name' ) ); ?></title>
このようにget_bloginfo()で取得した値をesc_html()で囲むことで、万が一データベース内に不正なスクリプトが混入していたとしても、ブラウザ上での実行を防ぐことができます。
これは、クロスサイトスクリプティング(XSS)対策の基本です。
bloginfo()使用時のトラブルシューティング
bloginfo関数を使用している際に遭遇しがちな問題とその解決策について解説します。
1. URLが正しく表示されない
bloginfo('url')で出力されるURLが意図しないもの(古いドメインやサブディレクトリなど)になっている場合、それはWordPress管理画面の「設定 > 一般」にある「サイトアドレス (URL)」の設定が間違っている可能性が高いです。
プログラム側を修正するのではなく、管理画面の設定を確認してください。
2. キャッチコピーを変更しても反映されない
ブラウザのキャッシュや、サーバー側のページキャッシュプラグインが原因であることが多いです。
また、最近のテーマではテーマカスタマイザー(外観 > カスタマイズ)の独自設定が優先される場合もあるため、そちらの設定項目も併せて確認しましょう。
3. 特殊文字が文字化けする
bloginfo('charset')が正しく<meta>タグに出力されているか確認してください。
また、PHPファイル自体の保存形式が「UTF-8(BOMなし)」になっていることも重要です。
2026年現在、ほとんどの環境でUTF-8が標準ですが、古いシステムからの移行時には注意が必要です。
まとめ
bloginfo()関数は、WordPressサイトの基本情報を管理し、テンプレート上に表示させるためのシンプルかつ強力なツールです。
パラメーターを適切に使い分けることで、サイトタイトル、URL、言語設定などを動的に制御でき、メンテナンス性の高いテーマ作成が可能になります。
今回の解説で重要なポイントを振り返ります。
- bloginfo()は情報を直接表示し、get_bloginfo()は値を返す。
- サイト名には
'name'、URLには'url'を使用する。 - テーマディレクトリの取得などには、より専用の関数(
get_template_directory_uri()など)を使うのが現在の主流。 - セキュリティを考慮する場合、
echo esc_html( get_bloginfo( 'name' ) );のようにエスケープ処理を行うのが望ましい。
WordPressの仕様は進化し続けていますが、この関数の根幹的な役割は変わりません。
基本をしっかりと押さえ、状況に応じて最適な関数を選択できるようになることで、プロフェッショナルなサイト開発へと一歩近づくことができるでしょう。
