Créateur de thèmes WordPress :: Formateur :: Web Designer

Genesis :: Créer un contenu réservé dans WordPress

Publié le : 

Modifié le : 

Par : 

Dans ce tutoriel nous verrons comment rapidement créer un site réservé aux membres en excluant certaines pages. La première partie de l’article utilise une fonction WordPress native. La deuxième se cale sur les hooks de Genesis.

Filtre sur le content

Nous allons utiliser un hook de type add filter pour filtrer content de WordPress. Entendez ici, tout le contenu qui est ajouté dans l’éditeur visuel de votre article ou de votre page.

// filter sur le content
add_filter( 'the_content', 'gn_filter_content_no_loged', 20 );
function gn_filter_content_no_loged( $content ) {
    if( is_user_logged_in() || is_page( '3096') ) {
        return $content;
    } else {
        $mess = '<h3>Contenu réservé</h3>';
        $mess .= '<p>Merci de vous rendre sur cette page pour créer votre compte ou connectez vous à droite dans la barre latérale de cette page.</p>';
        return $mess;
    }
}

Voici le détail de la fonction.

  • j’ajouter un hook avec add_filter sur the_content.
  • J’appelle ma fonction gn_filter_content_no_loged qui est déclarée juste après.
  • J’ajoute deux conditions séparées par || pour “OU”.
  • La condition avec if vérifie deux éléments. Le premier, is_user_logged_in (article du codex), qui voit si l’utilisateur est logué. Le deuxième pour la page avec l’identifiant “3096” (article du codex). Si vous avez plusieurs pages, le codex explique qu’on peut utiliser un array
  • Si la condition n’est pas remplie, c’est else qui entre en jeu.
  • Dans une variable $mess, je stocke le message qui s’affichera. Le deuxième $mess utilise la concaténation avec .= pour ajouter à la volée d’autres éléments à cette même variable.

Attention pour les add_filter, les résultats doivent toujours être retournés. Au final, si l’utilisateur n’est pas connecté au site (quel que soit son rôle), le contenu est masqué et

Conditionnel sur le squelette Genesis

Dans la deuxième partie, nous allons utiliser un hook pour filtrer le contenu affiché par le framework Genesis. Il s’agit de masquer certaines zones pour les personnes qui ne sont pas connectées. Ici je masque les éléments suivants:

  • les informations de l’article (date de publication, auteur…) avec genesis_post_info
  • les commentaires avec genesis_get_comments_template
  • les catégorie et mot-clefs avec genesis_post_meta

Pour avoir le détail des zones à masquer, vous pouvez inspecter ce fichier /genesis/lib/structure/post.php. Tous les hooks pour accéder aux principaux éléments du squelette s’y affichent.

// filtres sur le contenu de Genesis
add_action( 'template_redirect', 'gn_remove_comment_no_loged' );
function gn_remove_comment_no_loged() {
    if ( !is_user_logged_in() ) {
        remove_action( 'genesis_entry_header', 'genesis_post_info', 12 );
        remove_action( 'genesis_after_entry', 'genesis_get_comments_template' );
        remove_action( 'genesis_entry_footer', 'genesis_post_meta' );
    }
}

Voici un extrait de ces hooks dans un Gist personnel.

[gist id=3012482 file=remove_action_genesis_htm5.php]

Si le contenu ne s’affichait pas, le voir en ligne.

Résultat final

Voici le code complet à placer dans un plugin maison ou dans le fichier functions.php de votre thème.

[gist id=f169cef594c82f3ff5d3 file=wp-genesis-private-content.php]

Si le contenu ne s’affichait pas, le voir en ligne.

Aperçu en ligne

Aperçu d’une partie du site pour les personnes non connectées.

capture: Aperçu du contenu réservé dans WordPress et Genesis

La même vue après la connexion.

capture: Affichage du contenu réservé dans WordPress et Genesis

Plugin de connexion

  • Members : avec une option pour ajouter un widget de connexion dans votre barre latérale. Une fois activé, se rendre dans le menu Réglages > Members > Sidebar Widgets
  • BAW Login/Logout menu : pour ajouter des liens pour se connecter ou se déconnecter dans vos menus.

Une réponse

  1. […] Comment créer une partie réservée pour les membres dans WordPress avec Genesis. Dans ce tutoriel nous verrons comment rapidement créer un site réservé aux membres en excluant certaines pages. […]