web-dev-qa-db-fra.com

Enregistrement d'utilisateur sur un sous-site dans une configuration multisite

En tant qu'administrateur réseau dans une configuration multisite, j'ai la possibilité d'activer ou de désactiver l'enregistrement d'utilisateur\enregistrement de site. Est-il possible d'activer l'enregistrement de l'utilisateur sur un seul sous-site, pas sur tous les sites?.

Dans ma configuration WP, j'ai un blog principal qui est géré par moi et je ne veux pas que l'utilisateur s'enregistre ici. J'ai un autre blog installé sur un sous-répertoire dédié au forum. Je souhaite activer l'enregistrement de l'utilisateur ici, afin que cet utilisateur puisse utiliser le forum

2
acr

La configuration multisite vous permet d'activer et de désactiver l'enregistrement des utilisateurs au niveau du réseau, mais si vous voyez la base de données, elle stocke la valeur dans les tableswp_optionsde chaque site.

Donc, nous pouvons essayer le ci-dessous et voir si cela fonctionne.

Utilisez le code ci-dessous dans le fichierfunctions.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;
}

Si la mise à jour est réussie, vous obtiendrez true sinon false

Vous pouvez maintenant utiliser la fonction pour activer tous les sous-sites de la configuration de la MU en transmettant la sous-site id à la fonction à la place de $blog_id.

1
Maruti Mohanty

Le multisite ajoute un filtre pour les appels get_option('users_can_register') dans ms-functions.phpusers_can_register_signup_filter. Ce filtre contourne les paramètres de niveau blog que vous essayez d'implémenter.

/**
 * 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