Comment personnaliser le back-office de WordPress ?

Cela n'est un secret pour aucun développeur utilisant WordPress, que le CMS présente de sérieux manques sur bien des sujets dès lors que l'on décide d'en tirer la substantifique moelle.

Bien sûr, il existe toute une kyrielle d'extensions (plugins) pour WordPress qui permettent de s'affranchir, avec plus ou moins de bonheur, de toutes ces limitations que les power-users de WordPress rencontrent en permanence.

Cet article, probablement loin d'être aussi exhaustif que vous l'aimeriez, est une compilation de "techniques" permettant, de personnaliser les fonctionnalités du CMS (essentiellement au niveau du back-office, mais pas seulement).

Pour l'un de nos clients nous avons récemment développé, avec WordPress, un portail immobilier de plus de 4 millions de pages et de nombreuses fonctionnalités qui ne pouvaient être implémentées de manière satisfaisante avec des plugins WordPress.

De plus, installer de nombreuses extensions ralentit fortement un site les utilisant, et il est possible de s’en passer dans bien des cas (voir cet excellent article : 21 hacks pour 21 plugins WordPress inutiles)

De ce projet est née l'idée de cet article.

Principales caractéristiques du projet

Notre client souhaitait une refonte totale et en profondeur d'un portail immobilier qui présentait de nombreux problèmes, n'était pas simple d'utilisation (pour sa mise à jour), ne permettait pas aux internautes de publier du contenu, n'était pas ouvert sur des partenariats (intégration de contenu externe) et, at last but not the least, dont les revenus étaient en baisse constante.

Le cahier des charges mettait, notamment, en avance les points suivants :

  • Interface d'administration du portail simple d'utilisation (donc sans avoir de besoin spécifique de formation pour les gestionnaires du site)
  • Interface spécifiquement adaptées aux Internautes pour ajouter des annonces  ou des sites Web (dans l'annuaire du portail)
  • Passerelles automatisées entre le portail et différents partenaires pour intégrer et publier automatiquement des annonces immobilières (flux XML, fichiers CSV, etc.)
  • Génération de statistiques de consultation des annonces (nombre d'affichage dans les listes, clics, demandes de contact, etc.)
  • Référencement naturel optimisé
  • Performances globales (la précédente version était devenue excessivement lente)
  • Permettre aux internautes de contacter directement l'annonceur d'une annonce par le biais d'un formulaire de contact sécurisé (idem pour les sites inscrits dans l'annuaire du portail)
  • Intégrer le portail à Twitter (chaque nouvelle annonce et chaque nouveau site de l'annuaire est automatiquement publié sur Twitter)
  • Permettre aux visiteurs du portail de s'enregistrer afin de publier gratuitement des annonces immobilières, ou, d'inscrire leur site Web dans l'annuaire
  • Intégration de modules publicitaires (type Google AdSense, affiliation, etc.)

Pourquoi avoir retenu WordPress pour ce projet ?

C'était le principal critère retenu par notre client ! Pour des raisons diverses et variées, le client voulait que WordPress soit le coeur de ce portail immobilier.

Dès lors, nous devions trouver une solution technique satisfaisante (du point de vue des performances essentiellement) en utilisant WordPress pour parvenir à satisfaire notre client, du point de vue de ses objectifs, du point de vue de ses pré-requis, et également, bien sûr, les internautes .... et ... les moteurs de recherche.

Certes, et nous entendons déjà certaines voix s'élever et s'offusquer : "Comment ça, votre agence n'a pas proposé d'autres solution technique à votre client ?" .  Seulement voilà, notre client a plusieurs sites Internet ... tous motorisés par WordPress... Dès lors, une quelconque objection de notre part sur le choix de WordPress pour ce sujet aurait été vaine.

Après avoir longuement planter le décor, il est temps d'entrer dans le vif du sujet de cet article ... Non ?

WordPress : un CMS ?

Oui et non...

Pour que WordPress soit effectivement un CMS il faut mettre la main dans le cambouis !

Car un CMS c'est un système de gestion de contenu. Or, en la matière,  les fonctionnalités de base de WordPress sont nettement insuffisantes.

Bien qu'il soit possible de personnaliser WordPress à l'envie (par le biais des extensions), dans le cadre d'un projet conséquent, WordPress montre rapidement ses limites.

A dire vrai, aucun CMS généraliste du marché n'a la capacité de s'adapter facilement et rapidement aux besoins d'un projet spécifique.

Il faut donc, avec WordPress, mais aussi avec d'autres CMS, repenser / redéfinir la structure d'informations que le CMS devra gérer...

Avec WordPress cela peut se faire par le biais des champs personnalisés, des types d'articles personnalisés et également des taxonomies personnalisées.

Custom fields ?  Oui.. mais... NON !

Dans le cadre d'un projet simple les champs personnalisés sont une solution rapide et simple à mettre en oeuvre et à utiliser.

Mais, dans le cas qui nous intéresse, l'utilisation de ces fameux champs personnalisés ne pouvaient être envisagée.

Pourquoi ?  Tout simplement parce que l'utilisation d'un champ personnalisé (exemple afficher la référence d'une annonce) nécessite une requête sur la base de données. Quand on a besoin de gérer une multitude de champs "personnalisés" cela représente un goulet d'étranglement (notamment quand le site doit “gérer” plusieurs millions d’articles), mais, aussi, une lourdeur certaine dans le développement.

Par ailleurs, l'interface de gestion des champs personnalisés, dans le back-office de WordPress, est tout simplement très limitée.
Certes, des extensions permettent d'améliorer cet aspect, mais il n'en demeure pas moins que les champs personnalisés ne sont pas la solution pour un site Web d'envergure.

Modèle des données

Pour que le site puisse gérer plusieurs dizaines de milliers d’annonces immobilières ainsi qu’un annuaire généraliste de sites Internet (avec des fiches de description de chaque site relativement détaillées) un modèle de données spécifique était nécessaire.

Pour intégrer une fonction de gestion d'annuaire dans WordPress il existe plusieurs extensions. Mais, en y regardant de plus près, aucune ne donne véritablement satisfaction, car la plupart (sinon toutes) utilisent principalement des champs personnalisés, et / ou, ne permettent pas une personnalisation adaptée (par exemple, le numéro de Siret, le choix du département, et, en corolaire, le choix de la ville, notation / appréciation du site par les internautes, formulaire de contact spécifique, etc.).

D'une manière basique, pour constituer un annuaire, et donc pour inscrire un site, il faut recueillir les informations suivantes (liste non exhaustive) :

  • Catégorie(s) de l'annuaire dans lequel le site Internet doit être inscrit
  • Nom du site
  • Propriétaire du site Internet (Nom, prénom)
  • Type du propriétaire : Entreprise / Professionnel, Particulier, Association, Collectivité locale / Services publics, Etc.
  • URL du site Internet Web
  • Email de contact (les internautes auront la possibilité de correspondre directement sur cet email par le biais d'un formulaire de contact sécurisé)
  • Adresse Postale (rue, état ou région, département, ville, code postal, pays).
  • Téléphone
  • Fax
  • GSM
  • Description du site (description unique, d'au moins 200 mots)
  • Une bannière (d'une taille définie, par exemple 600x300 pixels)
  • Profil Twitter, Facebook, et autres réseaux sociaux
  • Adresse du flux RSS
  • Niveau du compte (basic, silver, gold). Le délai de validation du site est fonction de ce choix Ce choix permet, aussi, d'avoir une "publicité" plus ou moins importante. Ainsi, le niveau "Gold" présente le site en bannière défilante sur toutes les pages du site pendant 12 mois, et présente le site en tête de tous les résultats de recherche dans l'annuaire. Comme l'annuaire propose également une navigation par catégorie, puis par sous-catégories, ces sites "Gold" seront systématiquement en tête des résultats. Ces sites "Gold" sont également "publiés" sur Twitter (et autres réseaux sociaux définis par le client).
    les sites de type "Silver" apparaîtront sous les sites "Gold" dans les listings. De manière aléatoires ces sites pourront être intégrés dans le diaporama qui est affiché en tête de toutes les pages et, être également publiés sur les réseaux sociaux.
  • Etc.
Les annonces immobilières gratuites publiées sur le portail proviennent de plusieurs sources : des particuliers, des agences immobilière et des flux de plateformes spécialisées dans l'immobilier avec lesquelles le portail immobilier a conclu un partenariat.
Typiquement, pour une annonce immobilière, le portail devait collecter les informations suivantes :
  • Type d'annonce (location, vente)
  • Type annonceur (particulier, agence, partenaire)
  • Nom agence (si agence ou partenaire)
  • Nom
  • Prénom
  • Téléphone fixe de contact
  • Téléphone portable de contact
  • Email de contact (non publié mais utilisé pour le formulaire de contact)
  • Adresse postale (rue)
  • Code postal
  • Département
  • Ville
  • Texte de l'annonce
  • Nombre de pièces
  • Type de chauffage
  • Type de cuisine
  • Equipements
    • Piscine
    • Climatisation
    • Exposition
    • Etc.
  • URL de l'annonce (si 'annonceur est un professionnel)
  • Etc.

Personnalisation du tableau de bord, des menus et de l'interface du back-office ...

Cette personnalisation de l'interface d'administration de WordPress est nécessaire en fonction du profil des utilisateurs (administrateur, gestionnaire, utilisateur)

Présentation simplifiée et adaptée des informations présentées sur le tableau de bord (par exemple pour l'administrateur  la liste des derniers inscrits, pour un gestionnaire la liste des dernières annonces, etc.)

Aucune extension ne s'est avérée satisfaisante pour atteindre cet objectif. Par contre, une extension a été utilisée pour définir des rôles supplémentaires (gestionnaire par exemple).

Le tableau de bord affiché à un utilisateur est donc différent en fonction de son profil.

  • Identifier le rôle de l'utilisateur connecté.
  • En fonction de son rôle, afficher un tableau de bord et des menus, personnalisés aux petits soins pour une meilleure expérience utilisateur.
Un administrateur a accès à toutes les fonctionnalités de WordPress, tandis que ...
  • Un gestionnaire pourra , notamment :
    • Voir les derniers visiteurs inscrits sur le portail immobilier
    • Consulter les statistiques (globales, style Google Analytics, mais aussi, spécifiques, par rapport aux annonces immobilières,  aux sites publiés dans l'annuaire gratuit du portail immobilier ....)
    • Bannir une demande d'inscription
    • Rejeter une demande de soumission d'un site Internet dans l'annuaire du portail immobilier
    • Avoir un accès sans restriction à l'interface de publication (articles, annonces immobilières, sites Web dans l'annuaire)
    • Gérer les utilisateurs inscrits
    • Gérer les annonces
    • Gérer les sites de l’annuaire
  • Un invité pourra
    • Ajouter et gérer ses annonces immobilières
    • Ajouter et gérer ses sites dans l’annuaire

Interface de gestion d’un site

interface de gestion d'un site dns l'annuaire

Interface de gestion d’une annonce immobilière

Interface de gestion d’une annonce immobilière

Conclusion

Dans le cadre de ce projet nous avons mis en oeuvre un large éventail de compétences afin de pouvoir créer un portail immobilier d'ampleur avec WordPress (PHP, mySql pour la base de données, Ajax, jquery, etc.)

Ce projet démontre que WordPress est un CMS totalement à même de gérer de très gros sites (plusieurs millions de pages, plusieurs dizaines de milliers de membres, des centaines de milliers de photos, etc.).

La réalisation de ce portail immobilier avec WordPress a mis en évidence le fait que dans de nombreux cas l'utilisation d'extensions est totalement inutile et inappropriée.

Personnaliser le back-office de WordPress est finalement quelque chose de relativement aisé. Toutefois, dans certains cas, cela s'avère plus long que prévu et quelques extensions pourront être avantageusement utilisées (gestion des membres et des droits par exemple). Dans d'autres cas (génération et mise à jour des fichiers sitemaps.xml), cela s'avérera totalement inutile et contre-productif (un petit générateur de ce genre de fichiers est simple et rapide à développer, et il suffit, ensuite, de programmer une tâche sur le serveur pour que ce générateur puisse faire le job !)

Contrairement à ce que peuvent penser certains, WordPress permet de créer un annuaire de plusieurs millions de pages, sans devoir d'ailleurs utiliser la moindre extension dans ce but.

Actuellement nous travaillons d'ailleurs sur un nouveau projet d'annuaire avec WordPress. Il sera mis en ligne dans les jours qui viennent. La principale différence avec le projet que nous venons d'évoquer est qu'un membre n'accède jamais au back-office de WordPress : autrement dit, il gère son compte, ses sites, etc. uniquement depuis le front-office du site... Bientôt plus d'informations sur ce projet d'annuaire avec WordPress...