Intégrer les fonctionnalités de CiviCRM dans WordPress
Dans cet article je vais vous présenter les différentes manières d’utiliser CiviCRM dans WordPress. Dans le cadre d’une utilisation de ce crm open source pour une association, il est judicieux de mettre à la disposition des contacts de l’organisation certaines données stockées dans le CRM via un affichage sur une page WordPress. L’affichage de ces données peut se faire de différente manière.
Utilisation des profils CiviCRM dans WordPress
Les profils permettent de créer facilement un formulaire de saisie, une page d’info sur des contacts ou bien un formulaire de recherche. Ces formulaires permettent de recueillir des informations de vos contacts, de les stocker dans la base de données du CRM et de les afficher sur une page WordPress si besoin. Cette fonctionnalité est très puissante. Pour accéder à l’interface de création des profils vous devez suivre le chemin suivant : Administrer > Personnaliser les données et écrans > Profils
Sur cette interface, vous pouvez visualiser des profils par défaut mis à votre disposition. Ces profils CiviCRM peuvent être affichés dans une page WordPress via un shortcode spécifique. Un paramètre présent dans le shortcode affiche le formulaire selon plusieurs modes :
- mode
view
: visualisation de donnée - mode
edit
: édition de donnée - mode
create
: création de donnée
Le shortcode se présente comme ceci : [civicrm component="profile" gid="44" mode="view" hijack="0"]
Il existe plusieurs shortcodes natifs à CiviCRM permettant d’afficher des données du CRM dans WordPress. Voici ci après le lien : shortcode CiviCRM WordPress
Dewy
Dans cet exemple, on souhaite afficher le profile (paramètre component
) avec l’identifiant 44 (paramètre gid
) en mode visualisation de donnée (paramètre mode
). Le paramètre hijack
indique à CiviCRM que l’affichage de ces données est intégré selon les paramètres natifs des shortcodes WordPress ou non. Pour notre exemple, on souhaite un affichage des données au plus proche du fonctionnement natif de WordPress. Dans ce cas on désactive le paramètre en utilisant la valeur 0.
Pour mon association du comité de quartier, j’ai utilisé le profil sympathisant proposé par le crm.
Lorsque vous utilisez CiviCRM, vous devez paramétrer des champs personnalisés propres à votre contact. Chaque association définie les données qu’elle souhaite stocker dans le CRM. Par exemple, pour mon comité de quartier, je peux ajouter un champ personnalisé stockant si le membre est un retraité ou pas. On peut également ajouter un autre champ personnalisé pour garder en base de données l’activité professionnelle du membre. Bref, on a de multiples possibilités pour qualifier les contacts d’une association.
Utilisation d’un plugin WordPress, Caldera form
La communauté de CiviCRM utilise le plugin Caldera form afin d’intégrer plus facilement des formulaires CiviCRM dans WordPress. Cependant, ce projet est abandonné par la communauté. En cherchant sur le net, j’ai pu voir que le plugin Ninja forms propose un addon pour connecter CiviCRM et WordPress. Je n’ai jamais testé cette solution, mais le plugin Ninja forms est un plugin de qualité donc je pense que cet addon peut apporter une plus value dans l’intégration de donnée du crm dans WordPress. Pour info cet addon est une fonctionnalité payante de Ninja forms.
Créer une extension personnalisée CiviCRM
Pour des intégrations complexes de CviCRM dans WordPress, il est préférable de créer une extension propre au projet sur lequel on doit travailler. Cette extension regroupera toutes les fonctionnalités personnalisées du projet afin d’afficher des données selon les besoins de l’association.
CiviCRM met à disposition des développeurs une librairie facilitant la création de module CiviCRM. Cette librairie est civix. Après installation de cette librairie sur votre hébergement, vous utiliserez un terminal pour créer cette extension. Cette librairie va générer les fichiers et les dossiers nécessaires pour votre module. Voici quelques lignes de commande civix pour créer votre extension
civix generate:module
: génération d’un module CiviCRM avec tous les fichiers nécessaires pour l’installation dans le CRMcivix generate:page MyPage civicrm/my-page
: génération d’une page de l’extension personnaliséecivix generate:form FavoriteColor civicrm/favcolor
: génération d’un formulaire dans l’extension
Utilisation de l’api de CiviCRM pour afficher des données dans WordPress
Ce crm open source en php mets à disposition des développeurs des apis. Deux versions sont disponibles dans le crm :
- api version 3
- api version 4
Suite à l’installation du crm, le développeur peut utiliser ces deux versions de l’api en suivant le chemin ci après : Support > Développeur > Explorateur API v3 ou Explorateur API v4. Depuis les dernières versions de CiviCRM, l’API v3 est dépréciée. Il faut éviter de l’utiliser pour les futurs projets.
Cette fonctionnalité nommée api est plutôt un constructeur de requête. Via les menus dédiés, vous pouvez utilisé un bac à sable pour tester vos requêtes en choisissant une entité du crm ainsi qu’une action. Avec l’api version 3 vous avez un grand nombre d’actions comme getoptions
, get
ou bien getsingle
. Par exemple, ci dessous, vous trouverez une utilisation de l’api 3 pour faire remonter un membre de l’entité contact avec l’action get
En dessous de ce constructeur, vous pouvez voir votre requête sous différente forme comme PHP, javascript, smarty, ou api rest. Vous avez également cette requête sous la forme d’une commande terminal pour la ligne de commande CiviCRM (cv), la ligne de commande de WordPress (wp-cli) ainsi qu’une commande curl.
Ensuite vous avez votre résultat de la requête
Pour l’api version 4, vous avez le même fonctionnement mais avec moins d’action que la version 3. L’ergonomie de l’outil est différente est c’est plus intuitif.
Ensuite vous pouvez voir le résultat de votre requête. Dans les onglets, vous pouvez voir la requête sous d’autres formes comme javascript, Angular, Cli et l’api rest.
Avec l’api 4 il est important de décocher la case CheckPermissions afin d’utiliser la requête dans un code personnalisé. Il n’est pas nécessaire de vérifier la permission pour lancer la requête
Dewy
Utilisation des hooks CiviCRM
Comme de nombreux outils présents dans le monde du web, CiviCRM met à disposition des hooks pour ajouter ou modifier du contenu CiviCRM dans WordPress.
Pour ma part, j’utilise ces hooks dans une extension CiviCRM dédiée à chaque projet. C’est pour moi une bonne pratique de développement.
CiviCRM propose une liste importante de hook dans sa documentation : CiviCRM hook. Chaque hook se « branche » sur un processus spécifique de CiviCRM. Par exemple le hook hook_alter_content
est déclenché lorsqu’un contenu du CRM est affiché. Via ce hook, vous pouvez utiliser un code personnalisé pour ajouter un texte spécifique sur la page. Voici un exemple de manipulation d’un hook ci dessous :
Pour que le hook fonctionne correctement, il est primordial de modifier le nom suivant monmodulecivicrm
par le nom de machine de votre extension.
Utilisation de searchkit et de formbuilder
Depuis les dernières versions de CiviCRM, une nouvelle fonctionnalité très, très puissante est apparue. C’est le combo searchkit et formbuilder.
Searchkit est accessible depuis le back office de CiviCRM. Cette fonctionnalité est également un constructeur de requête mais avec un affichage de données beaucoup plus poussé. Une surcouche angular.js permet un affichage des données rapide et instantané. Vous avez à votre disposition une multitude d’options pour construire la requête et personnalisé au maximum le résultat. C’est bluffant !!
Formbuilder permet de créer des formulaires basés sur des entités natifs ou personnalisés du crm. Avec formbuilder, vous avez une interface dédiée pour construire le formulaire, ajouter ou non des champs ou alors proposer ce formulaire sur la partie WordPress ou uniquement dans le back office du CRM. Cet outil peut être couplé à searchkit pour apporter encore plus de dynamisme dans l’affichage de vos rapports.
Cette fonctionnalité est incroyablement efficace et mérite un article dédié 🙂 ….restez connectés !!