Le WordPress d'aujourd'hui, décodé pour les développeurs

Extensions

Structurer les biens d’une agence immobilière sans surcharger les métadonnées

Type de bien, ville, nombre de pièces : certains attributs relèvent d'une taxonomie, d'autres d'un champ personnalisé. Le mauvais choix ralentit les requêtes.

Par WordPress Développement • 19 janvier 2021 • 4 min de lecture • Aucun commentaire
Structurer les biens d'une agence immobilière sans surcharger les métadonnées

Douze champs personnalisés pour décrire un bien immobilier : c’est le point de départ typique d’une petite agence qui structure son catalogue sans réfléchir à la nature de chaque attribut. Type de bien, ville, quartier, nombre de pièces, surface, présence d’un balcon, année de construction – tout finit en métadonnée, faute d’une distinction claire entre ce qui doit filtrer une recherche et ce qui décrit simplement le bien.

Cette approche fonctionne un temps, jusqu’à ce que le site propose un moteur de recherche par critères : filtrer par ville et par type de bien simultanément avec des meta_query imbriquées devient lent dès que le catalogue dépasse quelques centaines d’annonces, la table wp_postmeta n’étant pas conçue pour ce type de filtrage combiné.

Distinguer ce qui filtre de ce qui décrit

La règle qui simplifie la décision : si une valeur sert à filtrer, trier ou regrouper des biens entre eux, et qu’elle appartient à un ensemble fini de valeurs réutilisées, elle relève d’une taxonomie. Si elle décrit une caractéristique propre à un bien précis, souvent numérique ou en texte libre, elle reste une métadonnée.

function wpm_enregistrer_taxonomies_bien() {
    register_taxonomy( 'type_bien', 'bien', array(
        'label'        => 'Type de bien',
        'hierarchical' => false,
        'show_in_rest' => true,
    ) );

    register_taxonomy( 'ville', 'bien', array(
        'label'        => 'Ville',
        'hierarchical' => true,
        'show_in_rest' => true,
    ) );
}
add_action( 'init', 'wpm_enregistrer_taxonomies_bien' );

Ce qui reste en métadonnée

  • bien_surface : un nombre en mètres carrés, propre à chaque annonce
  • bien_nb_pieces : un entier, filtrable mais généralement par plage plutôt que par valeur exacte
  • bien_annee_construction : une donnée descriptive sans intérêt à regrouper en taxonomie
  • bien_reference : l’identifiant interne de l’agence pour ce bien

Pourquoi tax_query surpasse meta_query en performance

Une taxonomie s’appuie sur les tables wp_term_relationships et wp_term_taxonomy, indexées et pensées pour ce type de jointure. Une meta_query avec plusieurs conditions génère au contraire une jointure sur wp_postmeta par condition, une table qui grossit vite et dont l’index ne cible que la clé, pas la combinaison de plusieurs clés à la fois.

L'essentiel à retenir : Les valeurs filtrables et réutilisées vont en taxonomie ; Les valeurs uniques et numériques restent en métadonnée ; tax_query bat toujours meta_query en performance
// Recherche combinée, rapide grâce aux taxonomies
$requete = new WP_Query( array(
    'post_type' => 'bien',
    'tax_query' => array(
        'relation' => 'AND',
        array( 'taxonomy' => 'type_bien', 'field' => 'slug', 'terms' => 'appartement' ),
        array( 'taxonomy' => 'ville', 'field' => 'slug', 'terms' => 'lyon' ),
    ),
) );

Le cas particulier du nombre de pièces

Le nombre de pièces illustre bien la limite de la règle simple : c’est une valeur souvent filtrée (« 3 pièces et plus »), ce qui pourrait plaider pour une taxonomie. Mais comme les filtres portent généralement sur une plage plutôt qu’une valeur exacte, une métadonnée numérique avec une meta_query de type NUMERIC et un opérateur >= reste plus adaptée qu’une taxonomie avec une entrée par nombre de pièces possible.

Un compromis : combiner les deux mécanismes

Rien n’empêche de combiner une tax_query pour les critères discrets (ville, type de bien) et une meta_query réduite à un seul critère numérique (surface minimale, nombre de pièces minimal). Cette combinaison reste largement plus performante qu’une recherche entièrement construite sur des métadonnées.

AttributMécanismeJustification
Type de bienTaxonomieEnsemble fini, filtré fréquemment
Ville / quartierTaxonomie hiérarchiqueRegroupement naturel, réutilisé
SurfaceMétadonnée numériqueValeur propre à chaque bien, filtrée par plage
Référence interneMétadonnée texteNon filtrable côté visiteur

Sur un catalogue de biens, la première question avant de créer un champ n’est pas « comment vais-je l’afficher » mais « comment vais-je le filtrer dans six mois, quand le catalogue aura triplé ».

En résumé

Un catalogue immobilier bien pensé repose sur un partage clair entre taxonomies pour les critères de filtrage combinés et métadonnées pour les valeurs propres à chaque bien. Cette distinction, posée dès la conception, évite une migration douloureuse le jour où le nombre d’annonces dépasse ce qu’une recherche à base de métadonnées peut encaisser sans ralentir la page de résultats.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi