マルチサイト構成のネットワーク管理者として、ユーザー登録\サイト登録を有効または無効にするオプションがあります。すべてのサイトではなく、単一のサブサイトでユーザー登録を有効にできる方法はありますか。
私のWP設定には、私が管理しているメインのブログがあり、ユーザーにここに登録してほしくないです。フォーラム専用のサブディレクトリに別のブログがインストールされています。ユーザーがフォーラムを使用できるように、ここでユーザー登録を有効にします。
マルチサイト設定では、ネットワークレベルでユーザー登録を有効または無効にできますが、データベースが表示されている場合は、各サイトの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設定内の任意のサブサイトを有効にすることができます。
Multisiteでは、ms-functions.php
users_can_register_signup_filter
にget_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');