MISE À JOUR 2022 : Le plugin BUSINESS DIRECTORY est maintenant 100% compatible avec le plugin NavXT Breadcrumb Vous n’avez donc plus besoin de la suite de cet article il vous suffit d’installer le plugin et vous aurez un fil d’Ariane sur votre site.

Le Fil D’Ariane ?

Le fil d’Ariane ou Breadcrumb en anglais est une méthode visuelle de navigation dont la représentation peut varier. Les symboles « > » sont répandus et fonctionnent alors comme des séparateurs et hiérarchisent le site Web. Cela aboutit généralement à un chemin de navigation construit de cette façon : 

Accueil > Catégorie > Position actuelle

En général ce système est placé en haut de la page du site internet et permet en clin d’œil de se situer. Le fil d’Ariane améliore aussi le SEO mais pour cela il doit respecter les standards de schema.org (https://schema.org) pour ne pas provoquer d’erreur dans la Search Console de Google.

Un fil d’Ariane avec Business Directory

Si comme moi vous souhaitez afficher sur votre site un fil d’Ariane ou Breadcrumb compatible avec le plugin Business Directory vous vous êtes sans doute confronté à des difficultés techniques dues au fait que le plugin BD utilise plusieurs sortes de pages différentes pour afficher les pages de son annuaire.

Il y’a déjà la page index de l’annuaire, les pages de recherche, de soumission et d’édition des annonces qui sont en fait des déclinaisons de la page principale. Les pages de catégories et de tags qui utilisent, elles, les « taxonomy » WordPress. Et enfin les pages d’annonces elles-mêmes qui sont en fait basées sur le système de « post » de WordPress.

NavXT Breadcrumb

Tout cela fait qu’adapter un fil d’Ariane standard pour les pages du Plugin Business Directory est particulièrement compliqué. Sur les forums de support du Plugin il est recommandé par l’équipe d’utiliser le plugin NavXT Breadcrumb qu’ils estiment compatible à 100%.

Malheureusement ce n’est pas vraiment le cas comme vous pouvez le constater dans cette conversation que j’ai eue avec l’équipe en charge du plugin le fichier qui sert à l’intégration de NavXT avec BD est obsolète et l’équipe n’a pas vraiment le temps de le mettre à jour car ils travaillent sur des erreurs critiques urgentes.

Le fichier en question se trouve là : 

wp-content/plugins/business-directory-plugin/includes/compatibility/ class-navxt-integration.php

Il pose 3 problèmes majeurs : le lien sur l’index de l’annuaire est absent lors des catégories, sous-catégorie et/ou annonces. De plus l’option « Place the home breadcrumb in the trail. » (Soit ajouter le lien vers la page d’accueil dans la hiérarchisation) ne fonctionne pas. Enfin les hiérarchies créées ne respectent pas les standards de schema.org.

Comment intégrer NavXT dans BD ?

Bien que cette intégration soit peu efficace, j’ai décidé de me servir du travail déjà effectué par l’équipe de developpement du Plugin Business Directory et de modifier la class d’intégration de NavXT pour qu’elle s’adapte au mieux.

Modifier ce fichier n’a pas posé de problème particulier, en utilisant la documentation conséquente du plugin NavXT il était facile de repérer les erreurs de construction du fichier d’intégration.

Voici le nouveau code php commenté.

Création d’un nouveau Plugin

Mais je ne pouvais pas me contenter de modifier le fichier directement dans le répertoire de BD. A chaque mise à jour du plugin ce fichier serait écrasé et il faudrait le téléverser à chaque fois à la main. Aussi je n’ai pas eu d’autre choix que de créer un nouveau plugin avec une nouvelle class PHP qui serait appelée à la place de la class WPBDP_NavXT_Integration. Et voilà la grande difficulté : comment remplacer l’ancienne class PHP par la nouvelle ?

Il a fallu d’abord comprendre que la class WPBDP_NavXT_Integration est mise en action directement dans sa construction :

add_action est ce qu’on appelle en langage WordPress un hook, c’est un mécanisme permettant aux développeurs d’effectuer une action précise à un moment précis.

Dans notre cas à chaque bcn_before_fill on ajoute la class WPBDP_NavXT_Integration qui met en action la fonction prepare_state puis ensuite à chaque bcn_after_fill on ajoute la class WPBDP_NavXT_Integration qui met action la fonction restore_state.

Il a fallu également comprendre que ces hooks sont mis en action lors du chargement du plugin BD grâce à cette partie de code dans la class principale class-wpbdp.php:

J’ai trouvé ma solution après plusieurs jours de recherche en supprimant TOUTES les actions du plugin BD sur bcn_before_fill et bcn_after_fill  mais pas à n’importe quel moment : lors de wpbdp_loaded :

Ensuite il ne reste plus qu’à mettre en action ma nouvelle class WPBDP_NavXT_Integration_glink mais APRES grâce à l’indice de priorité 999 :

Le code du Plugin Complet

Pour résumé voici le code complet de mon nouveau plugin :

Soutenez Glink en téléchargeant le plugin dans la boutique

Si vous souhaitez télécharger le dossier zip complet du plugin WPBDP NavXT Integration d’intégration de NavXT Breadcrumb à Business Directory et en même temps soutenir Glink vous pouvez le faire dans la boutique.