fbpx

Filtres WordPress MemberMouse

Les filtres sont des fonctions par lesquelles WordPress fait passer les données, à certains moments de l'exécution, juste avant d'effectuer une action sur les données. MemberMouse définit son propre ensemble de filtres que vous pouvez utiliser pour contrôler le flux d'exécution dans MemberMouse avant que certaines actions ne soient effectuées.

Voici un exemple de base :

function customContentProtection($data)
{
     return true ;
}
add_filter('mm_bypass_content_protection', 'customContentProtection') ;

Dans cet exemple, nous utilisons le add_filter() pour indiquer que la méthode  customContentProtection() doit être appelée lorsque MemberMouse applique la méthode  mm_bypass_content_protection filtre.

Pour en savoir plus sur l'utilisation de l'API d'action de WordPress lire cet article.

Référence du filtre MemberMouse

Voici une liste de tous les filtres MemberMouse, une description du moment où ils sont exécutés et des informations sur les données qui seront transmises à toute fonction connectée au filtre.

Intervalle d'analyse de la facturation

mm_intervalle_de_facturation

MemberMouse 3.0+

MemberMouse exécute périodiquement un WP-Cron qui recherche les abonnements devant être refacturés et les met en file d'attente en vue de leur traitement par le système de facturation local. Par défaut, les analyses sont effectuées toutes les quinze minutes. Ce filtre vous permet de modifier l'intervalle entre les analyses, ce qui peut s'avérer utile pour optimiser les performances de votre site.

Le plugin passe un seul argument $scanInterval à votre fonction, un nombre entier représentant le nombre de minutes par défaut entre les balayages. Votre fonction doit renvoyer un nombre entier représentant le nombre de minutes souhaité entre les analyses. Par exemple, la fonction suivante recherche les abonnements prêts à être facturés toutes les cinq minutes :


function customBillingScanInterval($scanInterval)
{
   retourne 5 ;
}
add_filter("mm_billing_scan_interval", "customBillingScanInterval", 10, 2) ;

Intervalle de relance de l'abonnement

mm_billing_subscription_dunning_intervalle

MemberMouse 3.0+

Si un abonnement n'est pas facturé à la date prévue, MemberMouse effectue trois tentatives supplémentaires pour recouvrer le paiement. Ce filtre vous permet de contrôler l'intervalle entre les tentatives.

MemberMouse transmet deux arguments à votre fonction. Le premier est un entier $failureIntervalle qui représente le nombre de jours par défaut avant la prochaine tentative. Le deuxième est un nombre entier $failureState qui représente l'état d'échec particulier de la facturation. Il existe actuellement trois états d'échec : 2, 3 et 4, qui représentent respectivement la deuxième, la troisième et la dernière tentative de recouvrement.

Votre fonction doit renvoyer un nombre entier représentant le nombre de jours qui doivent s'écouler avant la prochaine tentative. Voici un exemple qui reproduit les intervalles de relance par défaut :

function customDunningInterval($failureInterval, $failureState)
{
   switch ($failureState)
   {
      case 2 :
         return 2 ; // Première tentative, deux jours après l'échec de la refacturation initiale.
      
      case 3 :
         return 3 ; // Deuxième tentative, trois jours après la première tentative.
      
      cas 4 : return 2 ; // Troisième tentative, deux jours après la deuxième tentative
         return 2 ; // Troisième tentative, deux jours après la deuxième.
      
      par défaut :
         return $failureInterval ;
   }
}
add_filter("mm_billing_subscription_dunning_interval", "customDunningInterval", 10, 2) ;

Pour personnaliser les intervalles de relance, il vous suffit de modifier les valeurs renvoyées dans les trois instructions de cas pour obtenir la durée souhaitée en jours.


Accès en bloc

mm_block_access

Ce filtre est appliqué après que MemberMouse a déterminé que le visiteur actuel a accès au contenu, et vous permet de bloquer sélectivement l'accès au contenu protégé.

MemberMouse transmet une valeur booléenne $blockAccess à votre fonction, indiquant si elle bloque l'accès au contenu par défaut. Votre fonction doit renvoyer un booléen indiquant si MemberMouse doit bloquer l'accès au contenu.

Par exemple, pour empêcher tous les membres d'accéder à des contenus protégés :


function blockMemberAccess($blockAccess)
{
   return true ;
}
add_filter("mm_block_access", "blockMemberAccess", 10, 2) ;

Contourner la protection du contenu

mm_bypass_content_protection

Ce filtre est appliqué après que MemberMouse a déterminé que le visiteur actuel n'a pas accès au contenu, et vous permet de contourner sélectivement la protection du contenu.

MemberMouse transmet une valeur booléenne $allowAccess à votre fonction, indiquant si elle doit permettre l'accès au contenu par défaut. Votre fonction doit renvoyer un booléen indiquant si MemberMouse doit autoriser l'accès au contenu.

Par exemple, l'option suivante permet à tous les membres auxquels a été attribué le droit de vote d'avoir accès à l'information sur les droits d'auteur. Contributeur l'accès à toutes les pages et à tous les messages protégés :


function allowAccessForContributors($allowAccess)
{
    if (current_user_can("contributor"))
    {
        return true ;
    }
    else
    {
        return $allowAccess ;
    }
}
add_filter("mm_bypass_content_protection", "allowAccessForContributors", 10, 2) ;

Veuillez noter que si ce filtre permet d'accéder à des pages et à des messages qui seraient autrement inaccessibles, il n'a pas d'incidence sur l'analyse des SmartTags de décision.


Redirection de la connexion

mm_login_redirect

Ce filtre est appliqué avant que MemberMouse n'exécute son comportement de redirection de connexion par défaut, à savoir configuré dans les paramètres de la page d'accueil des membres. Renvoyer une URL pour indiquer que MemberMouse doit rediriger l'utilisateur vers cette URL. Renvoyer une chaîne vide pour indiquer que MemberMouse doit utiliser ses propres règles internes pour déterminer où l'utilisateur doit être envoyé.

L'objet transmis à votre fonction contient l'URL vers laquelle MemberMouse redirigera l'utilisateur si vous ne renvoyez pas d'URL de remplacement et un objet utilisateur contenant des données sur l'utilisateur connecté.
Si le nom de l'objet dans votre fonction est $infoObj vous accéderez aux deux éléments de données comme suit :

$infoObj->currentUrl
$infoObj->user

Descripteur de la déclaration de stripe

mm_stripe_billing_statement_descriptor

Lorsque MemberMouse lance une refacturation, il envoie diverses données descriptives sur la charge. Le descripteur de relevé est ce qui sera affiché au client sur sa facture de carte de crédit, et il est également visible dans Stripe. Ce filtre vous permet de personnaliser le descripteur de relevé pour les transactions de refacturation.

Veuillez noter que la longueur totale maximale du descripteur de relevé est de 22 caractères, et que l'envoi d'une chaîne plus longue entraînera l'échec du traitement du paiement. De plus, les données que vous envoyez peuvent être tronquées. Stripe crée finalement un "descripteur de relevé calculé" en ajoutant le descripteur que vous envoyez au descripteur abrégé spécifié dans la section Tableau de bord Stripe Paramètres publicsmais la longueur maximale de cette chaîne calculée est également de 22 caractères, et tout ce qui dépasse cette longueur sera rejeté.

Pour calculer la longueur maximale du contenu qui sera affiché, utilisez la formule suivante :

longueur maximale affichée = 22 - (longueur du descripteur raccourci + 2)

MemberMouse transmet deux paramètres à votre fonction. Le premier est $descripteur qui est une chaîne contenant les informations que MemberMouse enverra si elle n'est pas modifiée. La seconde est 1TP4Commande qui est un objet de classe standard contenant les données de l'ordre MemberMouse, que vous pouvez utiliser pour construire le descripteur de déclaration. 

Voici un exemple : 

add_filter("mm_stripe_billing_statement_descriptor", function($descriptor, $order)
{

   $descriptor = "Commande # : " . $order->orderNumber ;
   $maxLengthDescriptor = substr($descriptor,0,22) ;
   return $maxLengthDescriptor ;
}, 1, 2) ;

Si votre descripteur abrégé est ABC vos clients devraient voir quelque chose comme cela sur leurs relevés de carte de crédit :

ABC* Référence # : 10043

Ce filtre ne peut agir que sur les re-facturations et non sur les paiements initiaux. Pour voir toutes les données auxquelles il est possible d'accéder sur le site Web de la 1TP4Commande voir cet objet exemple d'objet de commande.


Stripe PaymentIntent Description

mm_stripe_paymentintent_description

Un autre élément de données envoyé à Stripe avec les factures est la description, que ce filtre vous permet de personnaliser. La description est l'une des colonnes qui s'affichent lorsque vous sélectionnez Paiements dans Stripe Dashboard. La longueur maximale de ce champ est de 350 caractères.

MemberMouse transmet deux paramètres à votre fonction. Le premier est $description qui est une chaîne contenant les informations que MemberMouse enverra si elle n'est pas modifiée. La seconde est 1TP4Commande qui est un objet de classe standard contenant les données de l'ordre MemberMouse, que vous pouvez utiliser pour construire la description. 

Par exemple, pour attribuer à ce champ la valeur Order# 1234, Item : Adhésion numérique vous pouvez utiliser la fonction suivante dans votre plugin :

add_filter('mm_stripe_paymentintent_description', function($description, $order)
{
   $description = "Commande # " . $order->orderNumber ;
   if (isset($order->orderProducts) && is_array($order->orderProducts))
   {
      $description .= ", Article : " . array_pop($order->orderProducts)->description ;
   }
   return $description ;
}, 1, 2) ;

Ce filtre ne peut agir que sur les re-facturations et non sur les paiements initiaux. Pour voir toutes les données auxquelles il est possible d'accéder sur le site Web de la 1TP4Commande voir cet objet exemple d'objet de commande.


Filtres par défaut de MemberMouse

Il s'agit de filtres inclus dans le plugin qui peuvent être remplacés dans votre code personnalisé à l'aide de la fonction remove_filter pour mettre en œuvre vos propres filtres.

Validateur de la force du mot de passe

mm_password_strength_validator

À partir de la version 2.2.9, MemberMouse prend en charge l'ajout d'un filtre de validation de mot de passe personnalisé. Cela permet d'évaluer le mot de passe en fonction d'exigences personnalisées. Par défaut, MemberMouse associe un filtre de base qui vérifie que le mot de passe comporte au moins 8 caractères. Les développeurs ont la possibilité d'ajouter un filtre supplémentaire qui sera appliqué en conjonction avec le filtre par défaut, ou de supprimer le filtre par défaut et de le remplacer par un filtre personnalisé.

L'exemple ci-dessous montre les étapes à suivre pour supprimer le filtre par défaut et le remplacer par un filtre personnalisé. Celui-ci peut être ajouté dans le fichier function.php du thème, mais nous vous recommandons, si vous choisissez cette solution, d'utiliser un fichier Thème enfant pour éviter que votre code ne soit perdu en cas de mise à jour du thème.

//supprime le filtre par défaut
remove_filter('mm_password_strength_validator',array('MM_UserHooks', "passwordStrengthValidator")) ;

//ajoute un filtre qui impose que les mots de passe aient au moins 8 caractères et contiennent une lettre majuscule, un chiffre et un caractère spécial
add_filter('mm_password_strength_validator', function($passwordData)
{
   if (is_object($passwordData) && isset($passwordData->data) && !preg_match('/^(?=.*[!@#$%^&*-])(?=.*[0-9])(?=.*[A-Z]).{8,20}$/', $passwordData->data))
   {
      $passwordData->type = "error" ;
      $passwordData->errors[] = "Le mot de passe doit contenir une majuscule, un caractère spécial et un chiffre" ;
   }
   return $passwordData ;
}, 10, 1) ;
Cet article a-t-il été utile ?

Articles connexes