Champs personnalisés avancés (ACF) est un excellent plugin pour ajouter du contenu à votre site, ou même pour créer un site web complet. Lorsque ACF est utilisé avec MemberPress, vous pouvez rencontrer des difficultés pour appliquer la protection basée sur l'adhésion à vos champs ACF.
Ce document vous montrera comment surmonter cette difficulté et construire avec succès votre site web avec ACF et MemberPress.
Pourquoi mes champs ACF ne sont-ils pas protégés dès le départ ?
La protection du contenu avec MemberPress se fait par Ajout de règles MemberPress. Il est important de préciser que ces règles ne protègent que le contenu produit par l'intermédiaire de l'interface WordPress le_contenu() la fonction. Il s'agit du contenu de votre message. Tout contenu rendu en dehors de cette fonction ne sera pas protégé.
Le plugin ACF utilise son propre get_field() pour afficher les champs ACF dans vos messages. Cela empêche le code de la règle MemberPress de s'exécuter dans ce cas. Par conséquent, bien que le contenu de votre message soit protégé et accessible uniquement à vos membres, les champs ACF de ce même message resteront visibles par tous.
Protection des champs d'ACF
Il y a deux façons de résoudre ce problème et d'empêcher les utilisateurs non autorisés d'accéder à vos champs ACF. La première solution consiste à protéger des messages entiers et à rediriger les utilisateurs vers une page spécifique.
Une autre solution consiste à protéger chaque champ ACF individuellement à l'aide d'un code personnalisé.
Utiliser une redirection non autorisée
Comme nous l'avons mentionné, la solution la plus simple consisterait à utiliser les règles MemberPress en combinaison avec la redirection non autorisée MemberPress.
Pour ce faire, vous devez d'abord activer l'option de redirection non autorisée dans les paramètres de MemberPress. Lorsque cette option est activée, vos utilisateurs non autorisés seront automatiquement redirigés hors des posts protégés. Ainsi, vous empêcherez ces personnes d'accéder à vos champs ACF non protégés en leur refusant l'accès à l'ensemble du message.
N'oubliez pas qu'une fois activée, la redirection s'appliquera à l'ensemble de votre contenu protégé. Si vous souhaitez toujours afficher le message non autorisé sur certains messages protégés, vous pouvez ajouter des exclusions de redirection non autorisées à l'aide d'un extrait de code personnalisé.
Protéger les champs individuels d'ACF
En fonction de vos objectifs, la protection de l'intégralité du message ne résoudra peut-être pas le problème dans votre cas. Dans ce cas, vous pouvez essayer d'utiliser notre mepr-active pour protéger les différents champs de l'ACF. Cette possibilité vous permettra de vérifier si l'utilisateur a un accès en fonction de ses abonnements actifs. Le champ ACF protégé ne sera affiché que pour les utilisateurs autorisés.
Vous trouverez ci-dessous un exemple de code permettant d'afficher un champ ACF protégé par une règle MemberPress. La règle MemberPress, dans cet exemple, a un ID de 123 et est appliquée à l'aide de la fonction mepr-active capacité :
<?php if(current_user_can('mepr-active', 'rules:123')) { get_field('acf_field_here') ; }
Pour utiliser ce code sur vos champs ACF, vous devez remplacez l'ID de 123 par l'ID de la règle que vous souhaitez appliquer. Vous trouverez les identifiants de toutes vos règles dans Tableau de bord > MemberPress > Règles.