{"id":8073,"date":"2023-08-14T14:22:17","date_gmt":"2023-08-14T21:22:17","guid":{"rendered":"https:\/\/membermouse.com\/?post_type=ht_kb&#038;p=8073"},"modified":"2025-01-07T09:55:29","modified_gmt":"2025-01-07T14:55:29","slug":"filtres-wordpress-membermouse","status":"publish","type":"ht_kb","link":"https:\/\/membermouse.com\/fr\/documents-3-2\/filtres-wordpress-membermouse\/","title":{"rendered":"Filtres WordPress MemberMouse"},"content":{"rendered":"<p>Les filtres sont des fonctions par lesquelles WordPress fait passer les donn\u00e9es, \u00e0 certains moments de l'ex\u00e9cution, juste avant d'effectuer une action sur les donn\u00e9es. MemberMouse d\u00e9finit son propre ensemble de filtres que vous pouvez utiliser pour contr\u00f4ler le flux d'ex\u00e9cution dans MemberMouse avant que certaines actions ne soient effectu\u00e9es.<\/p>\n\n\n\n<p>Voici un exemple de base :<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>function customContentProtection($data)\n{\n     return true ;\n}\nadd_filter('mm_bypass_content_protection', 'customContentProtection') ;\n<\/code><\/pre>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Dans cet exemple, nous utilisons le&nbsp;<a href=\"http:\/\/codex.wordpress.org\/Function_Reference\/add_filter\" target=\"_blank\" rel=\"noreferrer noopener\"><em>add_filter()<\/em><\/a>&nbsp;pour indiquer que la m\u00e9thode&nbsp; <em>customContentProtection()<\/em>&nbsp;doit \u00eatre appel\u00e9e lorsque MemberMouse applique la m\u00e9thode&nbsp; <em>mm_bypass_content_protection<\/em>&nbsp;filtre. <\/p>\n\n\n\n<p>Pour en savoir plus sur l'utilisation de l'API d'action de WordPress&nbsp;<a href=\"http:\/\/codex.wordpress.org\/Plugin_API\" target=\"_blank\" rel=\"noreferrer noopener\">lire cet article<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00e9f\u00e9rence du filtre MemberMouse<\/h2>\n\n\n\n<p>Voici une liste de tous les filtres MemberMouse, une description du moment o\u00f9 ils sont ex\u00e9cut\u00e9s et des informations sur les donn\u00e9es qui seront transmises \u00e0 toute fonction connect\u00e9e au filtre.<\/p>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Intervalle d'analyse de la facturation<\/h3>\n\n\n\n<p><strong>mm_intervalle_de_facturation<\/strong><\/p>\n\n\n\n<p><em><mark style=\"background-color:#fcb900\" class=\"has-inline-color has-black-color\">MemberMouse 3.0+<\/mark><\/em><\/p>\n\n\n\n<p>MemberMouse ex\u00e9cute p\u00e9riodiquement un <a href=\"https:\/\/developer.wordpress.org\/plugins\/cron\/\" target=\"_blank\" rel=\"noopener\" title=\"WP-Cron\">WP-Cron<\/a> qui recherche les abonnements devant \u00eatre refactur\u00e9s et les met en file d'attente en vue de leur traitement par le syst\u00e8me de facturation local. Par d\u00e9faut, les analyses sont effectu\u00e9es toutes les quinze minutes. Ce filtre vous permet de modifier l'intervalle entre les analyses, ce qui peut s'av\u00e9rer utile pour optimiser les performances de votre site. <\/p>\n\n\n\n<p>Le plugin passe un seul argument <code>$scanInterval<\/code> \u00e0 votre fonction, un nombre entier repr\u00e9sentant le nombre de minutes par d\u00e9faut entre les balayages. Votre fonction doit renvoyer un nombre entier repr\u00e9sentant le nombre de minutes souhait\u00e9 entre les analyses. Par exemple, la fonction suivante recherche les abonnements pr\u00eats \u00e0 \u00eatre factur\u00e9s toutes les cinq minutes :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function customBillingScanInterval($scanInterval)\n{\n   retourne 5 ;\n}\nadd_filter(\"mm_billing_scan_interval\", \"customBillingScanInterval\", 10, 2) ;\n<\/code><\/pre>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Intervalle de relance de l'abonnement<\/h3>\n\n\n\n<p><strong>mm_billing_subscription_dunning_intervalle<\/strong><\/p>\n\n\n\n<p><em><mark style=\"background-color:#fcb900\" class=\"has-inline-color has-black-color\">MemberMouse 3.0+<\/mark><\/em><\/p>\n\n\n\n<p>Si un abonnement n'est pas factur\u00e9 \u00e0 la date pr\u00e9vue, MemberMouse effectue trois tentatives suppl\u00e9mentaires pour recouvrer le paiement. Ce filtre vous permet de contr\u00f4ler l'intervalle entre les tentatives.<\/p>\n\n\n\n<p>MemberMouse transmet deux arguments \u00e0 votre fonction. Le premier est un entier <code>$failureIntervalle<\/code>&nbsp;qui repr\u00e9sente le nombre de jours par d\u00e9faut avant la prochaine tentative. Le deuxi\u00e8me est un nombre entier <code>$failureState<\/code>&nbsp;qui repr\u00e9sente l'\u00e9tat d'\u00e9chec particulier de la facturation. Il existe actuellement trois \u00e9tats d'\u00e9chec : 2, 3 et 4, qui repr\u00e9sentent respectivement la deuxi\u00e8me, la troisi\u00e8me et la derni\u00e8re tentative de recouvrement.<\/p>\n\n\n\n<p>Votre fonction doit renvoyer un nombre entier repr\u00e9sentant le nombre de jours qui doivent s'\u00e9couler avant la prochaine tentative. Voici un exemple qui reproduit les intervalles de relance par d\u00e9faut :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function customDunningInterval($failureInterval, $failureState)\n{\n   switch ($failureState)\n   {\n      case 2 :\n         return 2 ; \/\/ Premi\u00e8re tentative, deux jours apr\u00e8s l'\u00e9chec de la refacturation initiale.\n      \n      case 3 :\n         return 3 ; \/\/ Deuxi\u00e8me tentative, trois jours apr\u00e8s la premi\u00e8re tentative.\n      \n      cas 4 : return 2 ; \/\/ Troisi\u00e8me tentative, deux jours apr\u00e8s la deuxi\u00e8me tentative\n         return 2 ; \/\/ Troisi\u00e8me tentative, deux jours apr\u00e8s la deuxi\u00e8me.\n      \n      par d\u00e9faut :\n         return $failureInterval ;\n   }\n}\nadd_filter(\"mm_billing_subscription_dunning_interval\", \"customDunningInterval\", 10, 2) ;<\/code><\/pre>\n\n\n\n<p>Pour personnaliser les intervalles de relance, il vous suffit de modifier les valeurs renvoy\u00e9es dans les trois instructions de cas pour obtenir la dur\u00e9e souhait\u00e9e en jours.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Acc\u00e8s en bloc<\/h3>\n\n\n\n<p><strong>mm_block_access<\/strong><\/p>\n\n\n\n<p>Ce filtre est appliqu\u00e9 apr\u00e8s que MemberMouse a d\u00e9termin\u00e9 que le visiteur actuel a acc\u00e8s au contenu, et vous permet de bloquer s\u00e9lectivement l'acc\u00e8s au contenu prot\u00e9g\u00e9.<\/p>\n\n\n\n<p>MemberMouse transmet une valeur bool\u00e9enne <code>$blockAccess<\/code> \u00e0 votre fonction, indiquant si elle bloque l'acc\u00e8s au contenu par d\u00e9faut. Votre fonction doit renvoyer un bool\u00e9en indiquant si MemberMouse doit bloquer l'acc\u00e8s au contenu.<\/p>\n\n\n\n<p>Par exemple, pour emp\u00eacher tous les membres d'acc\u00e9der \u00e0 des contenus prot\u00e9g\u00e9s :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function blockMemberAccess($blockAccess)\n{\n   return true ;\n}\nadd_filter(\"mm_block_access\", \"blockMemberAccess\", 10, 2) ;\n<\/code><\/pre>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Contourner la protection du contenu<\/h3>\n\n\n\n<p><strong>mm_bypass_content_protection<\/strong><\/p>\n\n\n\n<p>Ce filtre est appliqu\u00e9 apr\u00e8s que MemberMouse a d\u00e9termin\u00e9 que le visiteur actuel n'a pas acc\u00e8s au contenu, et vous permet de contourner s\u00e9lectivement la protection du contenu. <\/p>\n\n\n\n<p>MemberMouse transmet une valeur bool\u00e9enne <code>$allowAccess<\/code> \u00e0 votre fonction, indiquant si elle doit permettre l'acc\u00e8s au contenu par d\u00e9faut. Votre fonction doit renvoyer un bool\u00e9en indiquant si MemberMouse doit autoriser l'acc\u00e8s au contenu.<\/p>\n\n\n\n<p>Par exemple, l'option suivante permet \u00e0 tous les membres auxquels a \u00e9t\u00e9 attribu\u00e9 le droit de vote d'avoir acc\u00e8s \u00e0 l'information sur les droits d'auteur. <em>Contributeur<\/em> l'acc\u00e8s \u00e0 toutes les pages et \u00e0 tous les messages prot\u00e9g\u00e9s : <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function allowAccessForContributors($allowAccess)\n{\n    if (current_user_can(\"contributor\"))\n    {\n        return true ;\n    }\n    else\n    {\n        return $allowAccess ;\n    }\n}\nadd_filter(\"mm_bypass_content_protection\", \"allowAccessForContributors\", 10, 2) ;\n<\/code><\/pre>\n\n\n\n<p>Veuillez noter que si ce filtre permet d'acc\u00e9der \u00e0 des pages et \u00e0 des messages qui seraient autrement inaccessibles, il n'a pas d'incidence sur l'analyse des SmartTags de d\u00e9cision.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Redirection de la connexion<\/h3>\n\n\n\n<p><strong>mm_login_redirect<\/strong><\/p>\n\n\n\n<p>Ce filtre est appliqu\u00e9 avant que MemberMouse n'ex\u00e9cute son comportement de redirection de connexion par d\u00e9faut, \u00e0 savoir&nbsp;<a href=\"https:\/\/membermouse.com\/fr\/documents-3-2\/parametres-de-la-page-daccueil-du-membre\/\" target=\"_blank\" rel=\"noreferrer noopener\">configur\u00e9 dans les param\u00e8tres de la page d'accueil des membres<\/a>. Renvoyer une URL pour indiquer que MemberMouse doit rediriger l'utilisateur vers cette URL. Renvoyer une cha\u00eene vide pour indiquer que MemberMouse doit utiliser ses propres r\u00e8gles internes pour d\u00e9terminer o\u00f9 l'utilisateur doit \u00eatre envoy\u00e9.<\/p>\n\n\n\n<p>L'objet transmis \u00e0 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\u00e9es sur l'utilisateur connect\u00e9.<br>Si le nom de l'objet dans votre fonction est&nbsp;<code>$infoObj<\/code>&nbsp;vous acc\u00e9derez aux deux \u00e9l\u00e9ments de donn\u00e9es comme suit :<\/p>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>$infoObj-&gt;currentUrl\n$infoObj-&gt;user<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Descripteur de la d\u00e9claration de stripe<\/h3>\n\n\n\n<p><strong>mm_stripe_billing_statement_descriptor<\/strong><\/p>\n\n\n\n<p>Lorsque MemberMouse lance une refacturation, il envoie diverses donn\u00e9es descriptives sur la charge. Le descripteur de relev\u00e9 est ce qui sera affich\u00e9 au client sur sa facture de carte de cr\u00e9dit, et il est \u00e9galement visible dans Stripe. Ce filtre vous permet de personnaliser le descripteur de relev\u00e9 pour les transactions de refacturation.<\/p>\n\n\n\n<p>Veuillez noter que la longueur totale maximale du descripteur de relev\u00e9 est de 22 caract\u00e8res, et que l'envoi d'une cha\u00eene plus longue entra\u00eenera l'\u00e9chec du traitement du paiement. De plus, les donn\u00e9es que vous envoyez peuvent \u00eatre tronqu\u00e9es. Stripe cr\u00e9e finalement un \"descripteur de relev\u00e9 calcul\u00e9\" en ajoutant le descripteur que vous envoyez au descripteur abr\u00e9g\u00e9 sp\u00e9cifi\u00e9 dans la section <a href=\"https:\/\/dashboard.stripe.com\/settings\/public\" title=\"\">Tableau de bord Stripe Param\u00e8tres publics<\/a>mais la longueur maximale de cette cha\u00eene calcul\u00e9e est \u00e9galement de 22 caract\u00e8res, et tout ce qui d\u00e9passe cette longueur sera rejet\u00e9. <\/p>\n\n\n\n<p>Pour calculer la longueur maximale du contenu qui sera affich\u00e9, utilisez la formule suivante :<\/p>\n\n\n\n<p><em>longueur maximale affich\u00e9e = 22 - (longueur du descripteur raccourci + 2)<\/em><\/p>\n\n\n\n<p>MemberMouse transmet deux param\u00e8tres \u00e0 votre fonction. Le premier est <code>$descripteur<\/code> qui est une cha\u00eene contenant les informations que MemberMouse enverra si elle n'est pas modifi\u00e9e. La seconde est <code>1TP4Commande<\/code> qui est un objet de classe standard contenant les donn\u00e9es de l'ordre MemberMouse, que vous pouvez utiliser pour construire le descripteur de d\u00e9claration.&nbsp;<\/p>\n\n\n\n<p>Voici un exemple :&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter(\"mm_stripe_billing_statement_descriptor\", function($descriptor, $order)\n{\n\n   $descriptor = \"Commande # : \" . $order-&gt;orderNumber ;\n   $maxLengthDescriptor = substr($descriptor,0,22) ;\n   return $maxLengthDescriptor ;\n}, 1, 2) ;<\/code><\/pre>\n\n\n\n<p>Si votre descripteur abr\u00e9g\u00e9 est <em>ABC<\/em> vos clients devraient voir quelque chose comme cela sur leurs relev\u00e9s de carte de cr\u00e9dit :<\/p>\n\n\n\n<p><em>ABC* R\u00e9f\u00e9rence # : 10043<\/em><\/p>\n\n\n\n<p>Ce filtre ne peut agir que sur les re-facturations, et non sur les paiements initiaux. <\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Stripe PaymentIntent Description<\/h3>\n\n\n\n<p><strong>mm_stripe_paymentintent_description<\/strong><\/p>\n\n\n\n<p>Un autre \u00e9l\u00e9ment de donn\u00e9es envoy\u00e9 \u00e0 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\u00e9lectionnez <em>Paiements<\/em> dans Stripe Dashboard. La longueur maximale de ce champ est de 350 caract\u00e8res.<\/p>\n\n\n\n<p>MemberMouse transmet deux param\u00e8tres \u00e0 votre fonction. Le premier est <code>$description<\/code> qui est une cha\u00eene contenant les informations que MemberMouse enverra si elle n'est pas modifi\u00e9e. La seconde est <code>1TP4Commande<\/code> qui est un objet de classe standard contenant les donn\u00e9es de l'ordre MemberMouse, que vous pouvez utiliser pour construire la description.&nbsp;<\/p>\n\n\n\n<p>Par exemple, pour attribuer \u00e0 ce champ la valeur&nbsp;<em>Order# 1234, Item : Adh\u00e9sion num\u00e9rique&nbsp;<\/em>vous pouvez utiliser la fonction suivante dans votre plugin :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter('mm_stripe_paymentintent_description', function($description, $order)\n{\n   $description = \"Commande # \" . $order-&gt;orderNumber ;\n   if (isset($order-&gt;orderProducts) &amp;&amp; is_array($order-&gt;orderProducts))\n   {\n      $description .= \", Article : \" . array_pop($order-&gt;orderProducts)-&gt;description ;\n   }\n   return $description ;\n}, 1, 2) ;<\/code><\/pre>\n\n\n\n<p>Ce filtre ne peut agir que sur les re-facturations et non sur les paiements initiaux. Pour voir toutes les donn\u00e9es auxquelles il est possible d'acc\u00e9der sur le site Web de la <code>1TP4Commande<\/code> voir cet objet\u00a0<a href=\"https:\/\/storage.googleapis.com\/wpgcbucket\/wp\/2025\/01\/8bb79f95-oder-object-example-membermouse.txt\" target=\"_blank\" rel=\"noopener\" title=\"\">exemple d'objet de commande<\/a>.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Filtres par d\u00e9faut de MemberMouse<\/h2>\n\n\n\n<p>Il s'agit de filtres inclus dans le plugin qui peuvent \u00eatre remplac\u00e9s dans votre code personnalis\u00e9 \u00e0 l'aide de la fonction&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/codex.wordpress.org\/Function_Reference\/remove_filter\" target=\"_blank\">remove_filter<\/a>&nbsp;pour mettre en \u0153uvre vos propres filtres.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Validateur de la force du mot de passe<\/h3>\n\n\n\n<p><strong>mm_password_strength_validator<\/strong><\/p>\n\n\n\n<p>\u00c0 partir de la version 2.2.9, MemberMouse prend en charge l'ajout d'un filtre de validation de mot de passe personnalis\u00e9. Cela permet d'\u00e9valuer le mot de passe en fonction d'exigences personnalis\u00e9es. Par d\u00e9faut, MemberMouse associe un filtre de base qui v\u00e9rifie que le mot de passe comporte au moins 8 caract\u00e8res. Les d\u00e9veloppeurs ont la possibilit\u00e9 d'ajouter un filtre suppl\u00e9mentaire qui sera appliqu\u00e9 en conjonction avec le filtre par d\u00e9faut, ou de supprimer le filtre par d\u00e9faut et de le remplacer par un filtre personnalis\u00e9.<\/p>\n\n\n\n<p>L'exemple ci-dessous montre les \u00e9tapes \u00e0 suivre pour supprimer le filtre par d\u00e9faut et le remplacer par un filtre personnalis\u00e9. Celui-ci peut \u00eatre ajout\u00e9 dans le fichier function.php du th\u00e8me, mais nous vous recommandons, si vous choisissez cette solution, d'utiliser un fichier&nbsp;<a href=\"https:\/\/codex.wordpress.org\/Child_Themes\" target=\"_blank\" rel=\"noreferrer noopener\">Th\u00e8me enfant<\/a>&nbsp;pour \u00e9viter que votre code ne soit perdu en cas de mise \u00e0 jour du th\u00e8me.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/supprime le filtre par d\u00e9faut\nremove_filter('mm_password_strength_validator',array('MM_UserHooks', \"passwordStrengthValidator\")) ;\n\n\/\/ajoute un filtre qui impose que les mots de passe aient au moins 8 caract\u00e8res et contiennent une lettre majuscule, un chiffre et un caract\u00e8re sp\u00e9cial\nadd_filter('mm_password_strength_validator', function($passwordData)\n{\n   if (is_object($passwordData) &amp;&amp; isset($passwordData-&gt;data) &amp;&amp; !preg_match('\/^(?=.*[!@#$%^&amp;*-])(?=.*[0-9])(?=.*[A-Z]).{8,20}$\/', $passwordData-&gt;data))\n   {\n      $passwordData-&gt;type = \"error\" ;\n      $passwordData-&gt;errors[] = \"Le mot de passe doit contenir une majuscule, un caract\u00e8re sp\u00e9cial et un chiffre\" ;\n   }\n   return $passwordData ;\n}, 10, 1) ;<\/code><\/pre>","protected":false},"excerpt":{"rendered":"<p>Les filtres sont des fonctions par lesquelles WordPress fait passer les donn\u00e9es, \u00e0 certains moments de l'ex\u00e9cution, juste avant d'effectuer une action avec les donn\u00e9es. MemberMouse d\u00e9finit son propre ensemble de filtres que vous...<\/p>","protected":false},"author":21411,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"_strive_editorial_status":"not-started","_strive_copy_of":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"ht-kb-category":[188],"ht-kb-tag":[],"class_list":["post-8073","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-mm-wp-hooks-filters"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/ht-kb\/8073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/users\/21411"}],"replies":[{"embeddable":true,"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/comments?post=8073"}],"version-history":[{"count":1,"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/ht-kb\/8073\/revisions"}],"predecessor-version":[{"id":20432,"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/ht-kb\/8073\/revisions\/20432"}],"wp:attachment":[{"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/media?parent=8073"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/ht-kb-category?post=8073"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/membermouse.com\/fr\/wp-json\/wp\/v2\/ht-kb-tag?post=8073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}