choose_primary_blog()
は、マルチサイト(WordPressネットワーク)環境において、ユーザーが所属する複数のサイト(ブログ)の中から「プライマリブログ(主要ブログ)」を選択する処理を行うための関数です。
ユーザーが複数サイトに参加している場合、その中でどれを主要なものとして扱うかを決定する場面で使用されます。主にログイン時やプロフィール更新時などに利用され、ユーザーエクスペリエンスの一貫性を保つ役割があります。
基本構文
choose_primary_blog( $user_id, $blog_id );
$user_id
: 対象ユーザーのID。$blog_id
: 設定したいプライマリブログのID。- 実行後、そのユーザーの
primary_blog
メタ値が更新されます。
引き数と戻り値
引き数 | 型 | 説明 |
---|---|---|
$user_id | int | 対象となるユーザーID |
$blog_id | int | プライマリとして設定するブログID |
戻り値 | 型 | 説明 |
---|---|---|
なし (void ) | — | 成功すれば設定が保存されるが、値は返さない |
使用例
タグを使った使用例
$user_id = get_current_user_id();
$blog_id = 3; // たとえば ID=3 のサイトをプライマリブログに設定する
choose_primary_blog( $user_id, $blog_id );
上記コードは、現在ログイン中のユーザーに対して、サイト ID=3 をプライマリブログとして設定する例です。以後、get_user_meta( $user_id, 'primary_blog', true )
でこの値が取得できます。
注意点
- マルチサイト環境でのみ使用可能です。シングルサイトでは意味を持ちません。
$blog_id
は、ユーザーが所属しているサイトでなければエラーや無視される可能性があります。- ユーザーが1サイトしか所属していない場合、この関数を使う必要はありません(自動的にそのサイトがプライマリとなる)。
よく一緒に使われる関数
get_blogs_of_user()
$blogs = get_blogs_of_user( $user_id );
ユーザーが所属しているすべてのサイトの情報を取得。どのブログをプライマリにするか選択する際に使用。
get_user_meta()
$primary = get_user_meta( $user_id, 'primary_blog', true );
choose_primary_blog()
で設定したプライマリブログを確認するために使います。
switch_to_blog()
switch_to_blog( $primary );
プライマリブログに切り替えて処理を行いたい場合に使用。restore_current_blog()
とセットで使うことが多いです。
想定されるトラブル
プライマリブログが正しく設定されない
ユーザーが所属していないサイトのブログIDを設定しようとすると、無効な設定になる。
解決方法
get_blogs_of_user()
で事前に所属確認してから設定するようにする。
マルチサイトでない環境で使用しても無効
シングルサイトでは choose_primary_blog()
は無意味で、データも保存されない。
解決方法
is_multisite()
を使って環境をチェックしてから実行する。
Q&A
まとめ
choose_primary_blog()
は、マルチサイトにおけるユーザーのメインサイトを設定する関数で、ユーザー体験を統一するための重要な役割を果たします。
使用にはマルチサイト前提であることを意識し、ユーザーが所属するサイトの中から適切に選択するようにしましょう。get_blogs_of_user()
などと併用することで、安全で柔軟な実装が可能です。
コメント