Je voudrais limiter l’accès à un seul sous-site (sous-domaine), de sorte qu’il ait besoin d’un plug-in pour afficher le site ... sans affecter les autres sous-sites.
Donc, par exemple, si j'ai 3 sous-sites comme celui-ci ...
hide.mydomain.com public1.mydomain.com public2.mydomain.com
Comment puis-je cacher et mot de passe protéger seulement le hide.mydomain.com?
Quelqu'un peut-il m'aider? J'ai du mal à trouver une solution, principalement parce que cela semble plus difficile à faire avec un sous-domaine et non un sous-dossier.
Vous pouvez utiliser un plugin puissant tel que Confidentialité multisite de WPMUDEV ou utiliser le code suivant que j'ai développé pour un projet personnel.
Pour utiliser ce code, créez-y un plug-in que vous n'activez que sur le site à protéger, ou si cela semble trop difficile, vous pouvez le coller dans le fichier functions.php du thème et envelopper l'appel add_action avec une instruction conditionnelle, comme indiqué ci-dessous. :
if ( get_current_blog_id() = 2 ) // Only apply privacy to blog ID 2
add_action('wp', 'private_site');
function private_site() {
if( $_GET['home'] == 'fix' ) { return; }
$isLoginPage = strpos($_SERVER['REQUEST_URI'], "wp-login.php") !== false;
$isPhoneApp = strpos($_SERVER['REQUEST_URI'], "xmlrpc.php") !== false;
$wpe_cookie = 'wpe-auth';
if( !is_user_logged_in() && !is_admin() && !$isLoginPage && !$isPhoneApp ) {
// WPE: If not-authenticated, delete our cookie in case it exists.
if ( isset($_COOKIE[$wpe_cookie]) ) setcookie($wpe_cookie,'',time()-1000000,'/');
$shareKey = get_post_meta( get_the_ID(), 'key', true );
if( $_GET['key'] && is_single && $_GET['key'] == $shareKey ) {
return;
} else {
$location = get_login_redirect_url( get_bloginfo( 'url') . $_SERVER['REQUEST_URI'] );
header( 'Location: ' . $location );
exit();
}
} else {
// WPE: Authenticated, so set the cookie properly. No need if it's already set properly.
$cookie_value = md5('wpe_auth_salty_dog|'.WPE_APIKEY);
if ( ! isset( $_COOKIE[$wpe_cookie] ) || $_COOKIE[$wpe_cookie] != $cookie_value )
setcookie($wpe_cookie,$cookie_value,0,'/');
}
}
// Returns the login URL with a redirect link.
function get_login_redirect_url( $url = '' ) {
$url = esc_url_raw( $url );
if ( empty( $url ) ) return false;
// setup query args
$query_args = array(
'redirect_to' => urlencode( $url )
);
return add_query_arg( $query_args, apply_filters( 'ass_login_url', wp_login_url() ) );
}