Pas de mot de passe sur les pages privées pour les administrateurs et auteurs

Avec WordPress, vous pouvez avoir des pages qui ne sont accessibles que par un mot de passe, petit fait bizarre si vous êtes l’auteur de l’article ou même un administrateur vous devez rentrer ce mot de passe pour y accéder. Afin d’éviter cette bizarrerie, vous pouvez insérer le code suivant dans votre fichier functions.php.

function bawnopass_template_redirect() {
 
    global $post, $current_user;
    
    // Si un utilisateur est connecté, et qu'il est admin ou l'auteur du post 
    // et que le post contient un pass et que le pass n'a pas été entré ...
    if( is_user_logged_in() 
         && !empty( $post )
	 && ( current_user_can( 'administrator' ) || $current_user->ID==$post->post_author ) 
	 && !empty( $post->post_password ) && post_password_required($post)
    ) :
 
	// On crée un hash pour le cookie avec l'api des hasher WP
	global $wp_hasher;
	if ( empty( $wp_hasher ) ):
		require_once( ABSPATH . 'wp-includes/class-phpass.php' );
		$wp_hasher = new PasswordHash( 8, true );
	endif;
	
        // Je crée le cookie avec le pass du post
	setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $post->post_password ) ), time() + 864000, COOKIEPATH );
		
        // Je le redirige vers sa page de provenance
	wp_safe_redirect( wp_get_referer() );
	
       // Toujours die() après une redirection.
       die();
    endif;
}
add_action('template_redirect', 'bawnopass_template_redirect' );

Après l’avoir inséré, vous ne devrez plus rentrer ce fameux mot de passe pour accéder à la page que vous avez créée et/ou administrée. Vous serez directement redirigé vers le contenu de la page cible.