web-dev-qa-db-ja.com

マルチサイト構成のサブサイトでのユーザー登録

マルチサイト構成のネットワーク管理者として、ユーザー登録\サイト登録を有効または無効にするオプションがあります。すべてのサイトではなく、単一のサブサイトでユーザー登録を有効にできる方法はありますか。

私のWP設定には、私が管理しているメインのブログがあり、ユーザーにここに登録してほしくないです。フォーラム専用のサブディレクトリに別のブログがインストールされています。ユーザーがフォーラムを使用できるように、ここでユーザー登録を有効にします。

2
acr

マルチサイト設定では、ネットワークレベルでユーザー登録を有効または無効にできますが、データベースが表示されている場合は、各サイトのwp_optionsテーブルに値が格納されています。

だから我々は以下を試して、これがうまくいくかどうかを確かめることができる。

functions.phpファイルで以下のコードを使用してください。

function wpse_enable_user_registration( $blog_id = 1 ) {
    switch_to_blog( $blog_id );
    // Fetching the present option
    $user_registration_option = get_option( 'users_can_register', 0 );

    if( '0' == $user_registration_option )
        $site_registration_option = update_option( 'users_can_register', 1 );

    restore_current_blog(); // Switches back to the original blog

    return $site_registration_option;
}

更新が成功すると、true else falseが返されます。

これで、この関数を使用して、$blog_idの代わりにサブサイトidを関数に渡すことで、MU設定内の任意のサブサイトを有効にすることができます。

1
Maruti Mohanty

Multisiteでは、ms-functions.phpusers_can_register_signup_filterget_option('users_can_register')呼び出し用のフィルタを追加しています。このフィルタはあなたが実装しようとするどんなブログレベルの設定も回避します。

/**
 * Check whether users can self-register, based on Network settings.
 *
 * @since MU
 *
 * @return bool
 */
function users_can_register_signup_filter() {
    $registration = get_site_option('registration');
    if ( $registration == 'all' || $registration == 'user' )
        return true;

    return false;
}
add_filter('option_users_can_register', 'users_can_register_signup_filter');
1
user54414