web-dev-qa-db-fra.com

désactiver la page protégée par mot de passe pour les utilisateurs connectés

Est-il possible d'ajouter des points d'ancrage sur function.php pour désactiver la page protégée par mot de passe pour les utilisateurs principaux (utilisateurs enregistrés)?

J'utilise beaver builder et lorsque je modifie une page ou une publication, je dois toujours mettre le mot de passe de la page avant d'accéder au générateur.

Merci.

4
sampaii

Désactive la protection post-mot de passe pour (certains) utilisateurs

Vous pouvez essayer le post_password_required filter (4.7+) pour le remplacer par les utilisateurs connectés:

add_filter( 'post_password_required', function( $returned, $post )
{
    // Override it for logged in users:
    if( $returned && is_user_logged_in() )
        $returned = false;

    return $returned;
}, 10, 2 );

ou le désactiver pour les utilisateurs ayant une capacité donnée (par exemple manage_options):

add_filter( 'post_password_required', function( $returned, $post )
{
    // Override it for users with the 'manage_options' capability
    if( $returned && current_user_can( 'manage_options' ) )
        $returned = false;

    return $returned;
}, 10, 2 );

Nous pourrions cibler un type de message donné avec:

add_filter( 'post_password_required', function( $returned, $post )
{
    // Target protected posts only
    if( ! $returned )
        return $returned;

    // Target logged in users only
    if( ! is_user_logged_in() )
        return $returned;

    // Target 'page' post type only
   if( 'page' !== get_post_type( $post ) )
        return $returned;

   // Override 
   return false;

}, 10, 2 );

Supprimer le texte 'Protected' des titres d'articles protégés

Pour supprimer le Protected préposé du titre, vous pouvez ajuster le format du titre protégé, pour les utilisateurs connectés, avec le filtre protected_title_format :

add_filter( 'protected_title_format', function( $format, $post )
{
    if( is_user_logged_in() )
        $format = '%s';

    return $format;
}, 10, 2 );
4
birgire