WordPressのマルチサイト専用で使えるテンプレートタグ(関数)について徹底解説
みなさんこんにちは!エンジニアの高澤です!
今回は、WordPressのマルチサイト専用で使えるテンプレートタグ(関数)について徹底解説したいと思います。
マルチサイトとは一つのWordPressで複数サイトを作ることができるWordPressに搭載されている標準の機能のことを言いますが、このマルチサイトには実は専用のテンプレートタグが存在します。
それらテンプレートタグを把握しておくことで、マルチサイトでどんなことができるのか実際のお仕事などの際に予測を立てたりイメージすることができます。
マルチサイトでのWordPressサイト開発で実際に使えるようにサンプルコードをテンプレートごとに掲載いたしましたので、よろしければぜひ繰り返しご活用いただけましたら幸いです。
目次
マルチサイトとは
マルチサイトとはWordPressの機能の一つで、一つのWordPressから複数のサイトを作成して運営することができる機能のことを言います。
よくWordPressでサイトを複数作りたい場合って考えられますよね?そんな時によくやるのがWordPressをサイトごとに一つひとつインストールしてサイトを複数作るという作業が考えられるかと思います。
ただその場合、それぞれのサイトにログインしようとするたびに一回一回わざわざメールアドレス(ID)とパスワードを入力してログインしなければならなくなります。これだと手間がかかりますよね?
このようなケースだけではないですが、こんな時に活躍するのがマルチサイトという機能です。
マルチサイトとしてのWordPressであれば、一つのWordPressで複数のサイトを作成して運用・管理することが可能です。
ただ、マルチサイトの話になると必ずお伝えしているのですが、メリットとデメリットが存在しますので必ず把握しておくようにしましょう。
このマルチサイト機能については、よろしければ以下の記事でWordPressをマルチサイトに対応させる方法やメリット・デメリットについて鬼のように詳しく書いておりますので、よろしければご活用ください。
マルチサイトのテンプレートタグ(関数)
それでは早速、マルチサイトのテンプレートタグ(関数)について解説したいと思います。
マルチサイトのテンプレートタグに関しては、作成した複数のサイト間との連携や表示の制御に役立つ便利なものが多数用意されております。
いやまAIがあるのでテンプレートタグを全て必ず覚えなきゃいけないということはないのですが、ざっとどんな関数があるのかだけでも把握しておくことで、いざ実装の際にスムーズに進めることができたり、マルチサイトのこんな機能を実装するというイメージや予測を立てることが可能になります。
お仕事時でも閲覧して使えるようにサンプルコードも掲載いたしましたので、よろしければぜひご活用ください。
get_sites()
get_sites()関数は、複数のサイト情報を配列で取得します。
<?php
$sites = get_sites();
foreach ( $sites as $site ) {
echo $site->blog_id . ': ' . $site->domain . $site->path . '<br>';
}上記コードは、WordPressマルチサイト環境で登録されているすべてのサイト情報を取得し、それぞれのサイトのブログID、ドメイン、パスを一覧表示する処理です。
get_sites()関数で全サイト情報を取得し、foreachループで1件ずつ処理しながら、blog_id、domain、pathの各値を連結してブラウザ上に出力します。
マルチサイトの管理やデバッグ時に便利な一覧表示のサンプルです。
get_sites()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
get_blog_details()
get_blog_details()関数は、特定のサイト(ブログ)の詳細情報を取得します。
<?php
$blog = get_blog_details( array( 'blog_id' => 2 ) );
echo $blog->blogname;上記コードは、WordPressマルチサイトでIDが2のサイトの詳細情報を取得し、そのサイトのブログ名(タイトル)を表示する処理です。
get_blog_details()関数を使って指定されたblog_idのサイト情報を取得し、blognameプロパティからその名称を出力します。主にマルチサイトで管理する他サイトの情報を参照したいときに使います。
get_blog_details()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
get_blog_option()
get_blog_option()関数は、別のサイトのオプション値を取得します。
<?php
$admin_email = get_blog_option( 3, 'admin_email' );上記コードは、WordPressマルチサイトにおいてIDが3のサイトの「管理者メールアドレス(admin_email)」を取得して、変数$admin_emailに代入する処理です。
get_blog_option()関数を使うことで、マルチサイトで管理する他のサイトの設定オプション値を取得できます。マルチサイトで異なるサイトの設定情報にアクセスしたい場合に便利です。
get_blog_option()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
get_blog_permalink()
get_blog_permalink()関数は、別サイトの記事URLを取得します。
<?php
echo get_blog_permalink( 1, 16 ); // 1番サイト、投稿ID16上記コードは、WordPressマルチサイト環境でサイトIDが1のサイトに属する投稿ID16のパーマリンク(URL)を取得し、それを画面に出力する処理です。
get_blog_permalink()関数を使うことで、マルチサイトで管理する他サイトの投稿へのリンクを正確に生成できます。複数サイト間で記事を紹介・リンクさせたいときに便利です。
get_blog_permalink()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
switch_to_blog() / restore_current_blog()
switch_to_blog()関数とrestore_current_blog()関数は、組み合わせることで他のサイトのコンテキストに一時的に切り替えてデータを取得することができます。
つまり、別のサイトの情報を一時的に取り出せるようになります。
<?php
switch_to_blog( 2 );
echo get_option( 'blogname' ); // サイト2の情報
restore_current_blog();上記コードは、WordPressマルチサイト環境で一時的にサイトIDが2のサイトに切り替えて、そのサイトのブログ名(タイトル)を取得・表示し、処理後に元のサイトに戻す流れを示しています。
「switch_to_blog(2)」で対象サイトのコンテキストに切り替え、get_option(‘blogname’)でそのサイトの名前を取得、restore_current_blog()関数で元のサイト状態に戻します。
複数サイトの情報を動的に扱いたいときに使います。
switch_to_blog()関数とrestore_current_blog()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
is_main_site()
is_main_site()関数は、現在のサイトがネットワークのメインサイトかどうかを判定。
<?php
if ( is_main_site() ) {
echo 'これはメインサイトです';
}上記コードは、現在アクセスしているサイトがマルチサイトネットワークのメインサイトかどうかを判定し、メインサイトであれば「これはメインサイトです」と表示する処理です。
is_main_site()関数は、メインサイトかどうかを真偽値で返すため、テーマやプラグインで条件分岐したいときに役立ちます。
is_main_site()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
is_multisite()
現在のWordPressがマルチサイトとして構成されているかを判定。
<?php
if ( is_multisite() ) {
echo 'マルチサイトです';
}上記コードは、現在のWordPress環境がマルチサイト機能を有効にしているかどうかを判定し、有効であれば「マルチサイトです」と表示する処理です。
is_multisite()関数はマルチサイト環境でtrueを返し、通常のシングルサイトではfalseを返します。テーマやプラグインでマルチサイト特有の処理を分岐させる際に便利です。
is_multisite()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
get_current_site()
現在のネットワーク(メインサイト)の情報を取得。
<?php
$current_site = get_current_site();
echo $current_site->domain;上記コードは、WordPressマルチサイト環境におけるネットワークのメインサイト情報を取得し、そのドメイン名を表示する処理です。
get_current_site()関数でネットワーク全体の情報オブジェクトを取得し、domainプロパティからメインサイトのドメインを取得して出力します。ネットワーク全体の設定や表示をカスタマイズする際に使用されます。
get_current_site()関数については以下の公式ドキュメントでも解説されておりますので、よろしければご活用ください。
まとめ
今回は、WordPressマルチサイト環境専用で使用できるテンプレートタグ(関数)について詳しく解説しました。
マルチサイトとは、1つのWordPressで複数のサイトを効率よく管理・運営できる標準機能です。そして、このマルチサイトには通常のWordPressでは使えない専用関数が多数用意されています。
これらの関数を知っておくことで、マルチサイト構成でどのような開発や運用が可能かを事前にイメージしやすくなり、実際の案件や業務でも大いに役立ちます。
記事内では、実用的なサンプルコードも交えて紹介しましたので、マルチサイト開発時のリファレンスとして繰り返しご活用いただければ幸いです。
お気軽に皆さんのご要望をお聞かせください!
どんなに些細なことでも構いません!よろしければ記事や当サイトへの「こんな記事があったら仕事とかで役に立つな〜」や「こうだったらもっと役に立つのに!」といったようなご要望等をお気軽にお聞かせください!今後のサービス改善にお役立てさせていただきます!
例1)Reactの技術記事を書いてほしい!
例2)WordPressの使い方とかを初心者向けに解説してほしい!...など