Autres tutoriels sur le sujet
- Modifier et ajouter des attributs HTML dans Genesis
- Devenir créateur de thèmes WordPress en 2019
- Utiliser le login de WooCommerce dans votre thème
- Ajouter un nouveau menu responsive dans Genesis
- WordPress :: Ajouter une image lightbox avant le titre dans Genesis
- WordPress :: Ajout d’une image d’en-tête retina (HiDPI) pour votre site
- WordPress :: Retirer les options de maquette Genesis pour un modèle de page
- WordPress :: Utiliser le champ Image d’ACF dans vos thèmes
- Genesis :: Collection de fonctions essentielles
- Page Builder WordPress par SiteOrigin
- WordPress :: ajouter des menus de recherche par date ou taxonomie
- Genesis :: Forcer la connexion dans les contenus réservés
- Genesis :: Comprendre et créer votre page d’accueil sur mesure
- WordPress :: Réduire les dépendances d’Avanced Custom Fields
- Genesis :: Comment mieux utiliser le modèle de page Blog
- Genesis :: Utiliser les Widgets Pages et Articles à la Une
- Genesis :: Créer un modèle de page WordPress sur mesure
- Genesis :: Réglages des thèmes enfants
- Genesis :: introduction au framework de thème WordPress
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
surthe_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.
La même vue après la connexion.
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
[…] 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. […]