MENU

choose_primary_blog()

choose_primary_blog() は、マルチサイト(WordPressネットワーク)環境において、ユーザーが所属する複数のサイト(ブログ)の中から「プライマリブログ(主要ブログ)」を選択する処理を行うための関数です。

ユーザーが複数サイトに参加している場合、その中でどれを主要なものとして扱うかを決定する場面で使用されます。主にログイン時やプロフィール更新時などに利用され、ユーザーエクスペリエンスの一貫性を保つ役割があります。

目次

基本構文

choose_primary_blog( $user_id, $blog_id );
  • $user_id: 対象ユーザーのID。
  • $blog_id: 設定したいプライマリブログのID。
  • 実行後、そのユーザーの primary_blog メタ値が更新されます。

引き数と戻り値

スクロールできます
引き数説明
$user_idint対象となるユーザーID
$blog_idintプライマリとして設定するブログ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_user_meta( $user_id, 'primary_blog', true ) を使えば確認できます。

まとめ

choose_primary_blog() は、マルチサイトにおけるユーザーのメインサイトを設定する関数で、ユーザー体験を統一するための重要な役割を果たします。

使用にはマルチサイト前提であることを意識し、ユーザーが所属するサイトの中から適切に選択するようにしましょう。get_blogs_of_user() などと併用することで、安全で柔軟な実装が可能です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次