MENU

add_user_to_blog()

add_user_to_blog() は、WordPress のマルチサイト(ネットワーク)環境で、特定のブログ(サイト)にユーザーを追加するための関数です。

この関数を使用すると、既存のユーザーに対して新しいサイトへのアクセス権限を付与できます。例えば、新しく作成したサイトに管理者や投稿者としてユーザーを追加する際に便利です。

管理画面を使わずにプログラム経由でユーザー管理を自動化できるため、大規模なサイト運営やカスタム登録システムを構築する際に役立ちます。

目次

機能の説明

add_user_to_blog() は、WordPress マルチサイト機能を有効にした環境で、指定したユーザーを特定のブログ(サイト)に追加し、指定した役割(ロール)を付与する関数です。通常の WordPress(シングルサイト)環境では使用できません。

主な用途

  • ユーザーを特定のサイトに手動または自動で追加する
  • サイト登録時にデフォルトの管理者や投稿者を設定する
  • プラグインやカスタムスクリプトでユーザー管理を自動化する

シンプルなコード例

add_user_to_blog(2, 5, 'editor');
  • 2:サイト ID(ブログ ID)
  • 5:追加するユーザーの ID
  • 'editor':ユーザーに付与する役割(ロール)

このコードを実行すると、ユーザー ID 5 のユーザーがサイト ID 2 に “editor”(編集者)として追加されます。

使い方の説明

基本的な使い方

add_user_to_blog() は、以下の 3 つの引数を指定して使用します。

add_user_to_blog($blog_id, $user_id, $role);

引数の詳細

  • $blog_id(整数):ユーザーを追加するサイトの ID
  • $user_id(整数):追加するユーザーの ID
  • $role(文字列):ユーザーに付与する役割(例:administrator, editor, author, contributor, subscriber

サイトの登録時に自動でユーザーを追加する

サイト作成時に特定のユーザーを自動で追加するには、wpmu_new_blog フックと組み合わせて使用できます。

function custom_add_user_on_blog_creation($blog_id, $user_id) {
    add_user_to_blog($blog_id, $user_id, 'administrator');
}
add_action('wpmu_new_blog', 'custom_add_user_on_blog_creation', 10, 2);
  • wpmu_new_blog フックを使用して、新しいサイトが作成されるたびにユーザーを追加
  • サイトを作成したユーザーをそのサイトの管理者(administrator)として登録

一緒に使うことが多い関連タグ

remove_user_from_blog()

ユーザーを特定のブログから削除する。

remove_user_from_blog(2, 5);

サイト ID 2 からユーザー ID 5 を削除します。

get_users()

サイトに登録されているユーザーを取得する。

$users = get_users(array('blog_id' => 2));

サイト ID 2 に登録されている全ユーザーのリストを取得します。

is_multisite()

現在の WordPress インストールがマルチサイトかどうかを判定する。

if (is_multisite()) {
    echo "この WordPress はマルチサイトです。";
}

マルチサイト環境でのみ add_user_to_blog() を使用する場合に便利です。

追加情報で取得したい場合

ユーザーのロールを確認する

get_user_meta() を使って、特定のサイトでのユーザーの役割を取得できます。

$role = get_user_meta(5, 'wp_2_capabilities', true);
print_r($role);
  • 5:ユーザー ID
  • 'wp_2_capabilities':サイト ID 2 のユーザーロールを取得

このコードを実行すると、ユーザー ID 5 のロール(administrator など)が表示されます。

想定されるトラブル

エラー:add_user_to_blog() が動作しない

解決方法

  • is_multisite() を使って、マルチサイト環境であることを確認する。
  • 指定した $user_id が存在するか、get_user_by('ID', $user_id) を使って確認する。
  • $role に正しいロールを設定しているか確認する(カスタムロールを追加した場合は注意)。

エラー:ユーザーが追加されたが、管理画面に表示されない

解決方法

  • 管理画面の「ユーザー」リストで「すべてのユーザー」を選択し、絞り込みを解除する。
  • wp_user_roles にカスタムロールが適切に登録されているか確認する。

Q&A

add_user_to_blog() はシングルサイト環境で使えますか?

いいえ、この関数はマルチサイト環境専用です。シングルサイトでユーザーの権限を変更する場合は wp_update_user() を使用してください。

追加したユーザーに特定の権限を持たせるには?

add_user_to_blog() で適切なロールを指定してください。カスタム権限を設定したい場合は add_role() を使用してカスタムロールを作成するのも方法の一つです。

ユーザーがすでにサイトに存在する場合はどうなりますか?

add_user_to_blog() を実行しても問題ありませんが、既存のロールは変更されません。新しいロールを適用したい場合は、remove_user_from_blog() で一度削除してから再追加する方法もあります。

まとめ

add_user_to_blog() は、WordPress マルチサイト環境で特定のサイトにユーザーを追加するための関数です。

新しいサイト作成時にデフォルトのユーザーを設定したり、カスタムプラグインを通じてユーザー管理を自動化するのに役立ちます。適切なロールを付与し、remove_user_from_blog() などの関連関数と組み合わせることで、柔軟なユーザー管理が可能になります。

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

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次