Documentation · Documentation technique

Types de publication personnalisés et taxonomies

Ce document décrit les types de publications personnalisés et les taxonomies enregistrés par le plugin ADP Car Market Hub : quels slugs ils utilisent, comment ils sont configurés, quelles capacités ils requièrent et comment ils apparaissent dans l'administration WordPress.

Quand utiliser ce document

Lisez ce document si vous devez :

  • Référencer les slugs exacts des types de publications et des taxonomies dans des requêtes personnalisées, des modèles ou le code du thème.
  • Comprendre quels rôles peuvent modifier les véhicules et les leads.
  • Planifier une intégration personnalisée, une requête REST ou WP_Query par rapport aux données des véhicules.

Pour les détails au niveau des colonnes et des champs, voir Database Schema et Data Model.

Aperçu

Le plugin enregistre deux types de publications personnalisés et 15 taxonomies d'attributs de véhicules :

  • as24ci_car — type de publication personnalisé public qui représente une seule annonce de véhicule. Enregistré par AS24CI\CPT.
  • as24ci_lead — type de publication personnalisé privé qui stocke les soumissions de formulaires de contact. Enregistré par AS24CI\Leads_CPT.
  • 15 taxonomies non hiérarchiques rattachées à as24ci_car. Enregistrées par AS24CI\Taxonomies.

Toutes les chaînes traduisibles utilisent le domaine de texte adp-car-market-hub.

Configuration requise ou prérequis

Aucune configuration supplémentaire n'est requise pour enregistrer ces objets. Les types de publications et les taxonomies sont enregistrés sur l'action WordPress init chaque fois que le plugin est actif.

Si vous souhaitez interroger des véhicules ou des leads via l'API REST, notez que seul as24ci_car est exposé (show_in_rest est true). Le type de publication as24ci_lead a intentionnellement show_in_rest défini sur false.

Le type de publication as24ci_car

Enregistré dans AS24CI\CPT::register_post_type() sur init à la priorité

  1. Configuration clé :
ArgumentValeur
publictrue
has_archivetrue
rewrite.slugcars (ainsi les URL uniques sont /cars/<slug>/ et l'archive est /cars/)
show_in_resttrue
show_in_menutrue (menu d'administration de premier niveau)
menu_icondashicons-car
menu_position3.1 (directement sous le menu CMH Center à la position 3)
supportstitle, editor, excerpt, thumbnail, author
capability_type[ 'as24ci_car', 'as24ci_cars' ]
map_meta_captrue

Parce que map_meta_cap est activé, WordPress mappe les capacités génériques (telles que edit_post) à l'ensemble singulier/pluriel personnalisé du plugin.

Permaliens

Chaque véhicule est publié sous /cars/<slug>/. L'importateur s'assure que le slug se termine par l'ID d'annonce AutoScout24 via AS24CI\Importer::ensure_slug_has_listing_id() afin que les réimportations maintiennent l'URL stable. Après l'activation, les règles de réécriture sont vidées une fois afin que l'archive /cars/ fonctionne immédiatement. Si l'archive renvoie une erreur 404, visitez Réglages → Permaliens et enregistrez une fois pour reconstruire le cache de réécriture.

Capacités

AS24CI\Plugin::ensure_roles_and_caps() accorde l'ensemble de capacités as24ci_car / as24ci_cars à :

  • Le rôle personnalisé as24ci_editor (créé lors de l'activation s'il n'existe pas).
  • Le rôle administrator.

La capacité manage_as24_imports (Plugin::CAP_MANAGE) restreint l'accès à l'interface utilisateur de l'importateur, des réglages, des outils et des journaux, et est accordée uniquement aux administrateurs. Les utilisateurs « Éditeur » de WordPress ne reçoivent pas automatiquement les capacités liées aux véhicules.

Interface d'administration : boîtes de méta (meta boxes)

AS24CI\CPT::register_meta_boxes() ajoute deux boîtes de méta à l'écran d'édition du véhicule :

  • AutoScout24 API Import (as24ci_details_editable) — boîte de méta combinée qui contient :
  • Les onglets « Données de l'annonce », un par groupe de mapping défini dans AS24CI\Field_Mapping::GROUPS (à l'exclusion des Équipements, qui sont générés par AS24CI\Equipment_Metabox).
  • Le bloc d'Équipements AutoScout24 (généré par AS24CI\Equipment_Metabox::render_metabox()).
  • La Galerie combinée (images manuelles + importées).
  • Badges (as24ci_badges) — boîte de méta de la barre latérale qui permet à l'éditeur de remplacer manuellement la détection automatique Neuf / Occasion / Vente et de basculer le drapeau « Offre phare ». La détection automatique est basée sur les colonnes condition_type, price et list_price du véhicule ; les remplacements manuels sont stockés dans les postmeta _as24ci_badge_override_new, _as24ci_badge_override_used, _as24ci_badge_override_sale et _as24ci_top_offer.

Champs en lecture seule

Les champs gérés exclusivement par l'importateur sont marqués en lecture seule dans le formulaire d'édition. La liste est définie dans AS24CI\CPT::FORM_READONLY_KEYS et comprend :

  • Identification : _as24ci_id, _as24ci_seller_id, _as24ci_seller_vehicle_id, _as24ci_serial_number, _as24ci_vin, _as24ci_external_id, _as24ci_certification_number.
  • Statut et horodatages : _as24ci_status, _as24ci_status_last_modified, _as24ci_created_date, _as24ci_last_modified_date.
  • Drapeaux de source : _as24ci_live, _as24ci_language, _as24ci_version_identification_method.

Les valeurs longues (_as24ci_teaser, _as24ci_description, _as24ci_images) sont affichées sous forme de zones de texte (textareas). Les champs numériques (prix, kilométrage, dimensions, etc.) sont affichés sous forme de <input type="number">.

Galerie manuelle

Le sélecteur de galerie combinée stocke les ID de pièces jointes sélectionnées manuellement dans la clé postmeta _as24ci_manual_image_ids. Les pièces jointes de la galerie manuelle sont intentionnellement traitées comme appartenant à l'utilisateur et ne sont jamais supprimées par le code de suppression ou de désinstallation du plugin, même lorsque les pièces jointes importées sont supprimées.

Colonnes de la liste d'administration

AS24CI\CPT ajoute des colonnes personnalisées à la liste d'administration Cars (par exemple une miniature et une étoile « Offre phare »). La colonne de miniature est dimensionnée via un CSS en ligne injecté sur l'écran edit.php pour le type de publication.

Le type de publication as24ci_lead

Enregistré dans AS24CI\Leads_CPT::register_post_type() sur init à la priorité 5. Configuration clé :

ArgumentValeur
publicfalse
show_uifalse
show_in_nav_menusfalse
show_in_restfalse
supportstitle

Les publications de leads ne sont pas visibles dans les listes d'administration standards WordPress car le plugin fournit un onglet dédié à la gestion des Leads. Le texte de soumission du formulaire de contact est stocké en tant que titre de la publication (nom du visiteur) et dans les clés postmeta définies par AS24CI\Leads_CPT::save_lead() :

  • _as24ci_lead_name, _as24ci_lead_email, _as24ci_lead_phone, _as24ci_lead_message
  • _as24ci_lead_vehicle_id, _as24ci_lead_vehicle_title, _as24ci_lead_vehicle_listing_id, _as24ci_lead_vehicle_url
  • _as24ci_lead_source_url, _as24ci_lead_date, _as24ci_lead_email_sent
  • _as24ci_lead_status (l'un des new, contacted, closed, spam ; par défaut new)
  • _as24ci_lead_appointment_date, _as24ci_lead_is_test_drive (pour les réservations d'essais routiers)

Les valeurs de statut valides sont exposées sous forme de constantes sur AS24CI\Leads_CPT (STATUS_NEW, STATUS_CONTACTED, STATUS_CLOSED, STATUS_SPAM).


Taxonomies des véhicules

AS24CI\Taxonomies::register_all() enregistre 15 taxonomies non hiérarchiques rattachées à as24ci_car. Chaque taxonomie est enregistrée avec les mêmes options :

ArgumentValeur
hierarchicalfalse (semblable à des étiquettes)
publicfalse
publicly_queryablefalse
show_uitrue
show_in_menutrue (sous-menu sous CMH Cars)
show_in_resttrue
show_in_nav_menusfalse
show_tagcloudfalse
show_admin_columnfalse
rewritefalse (pas de règles de réécriture ; pas d'archive publique de termes)
query_varfalse

Ces taxonomies sont internes : modifiables dans l'administration WordPress et exposées dans l'API REST (show_in_rest=true), mais sans pages d'archives de termes côté frontend. Voir includes/class-as24ci-taxonomies.php:204-223.

Référence des taxonomies

Slug de taxonomieLibellé singulierLibellé pluriel
as24ci_brandMarqueMarques
as24ci_modelModèleModèles
as24ci_body_typeType de carrosserieTypes de carrosserie
as24ci_conditionÉtatÉtats
as24ci_fuel_typeType de carburantTypes de carburant
as24ci_transmissionBoîte de vitessesBoîtes de vitesses
as24ci_driveTransmissionTransmissions
as24ci_ext_colorCouleur extérieureCouleurs extérieures
as24ci_int_colorCouleur intérieureCouleurs intérieures
as24ci_emission_stdNorme d'émissionNormes d'émission
as24ci_energy_labelÉtiquette énergétique (A-G)Étiquettes énergétiques (A-G)
as24ci_vehicle_catCatégorie de véhiculeCatégories de véhicules
as24ci_warranty_typeType de garantieTypes de garantie
as24ci_warranty_detDétails de la garantieDétails de la garantie
as24ci_cyl_arrangeConfiguration des cylindresConfigurations des cylindres

Les libellés ci-dessus sont les chaînes sources non traduites. Les libellés réels affichés dans l'interface d'administration sont traduits via le domaine de texte adp-car-market-hub.

Pas d'URL publiques pour les termes

Comme chaque taxonomie est enregistrée avec public=false, publicly_queryable=false, rewrite=false et query_var=false, les termes ne sont pas accessibles via des URL de taxonomie WordPress autonomes — par exemple, /as24ci_brand/<term-slug>/ ne se résout pas et n'est ajouté à aucun plan de site (voir class-as24ci-sitemap.php pour les exclusions correspondantes de Yoast / Rank Math / plan de site natif). Le filtrage des véhicules est géré par la propre logique de requête d'archive du plugin et par les colonnes dénormalisées de la table as24_vehicles, et non par des archives de termes publiques. Les termes restent disponibles pour les outils d'administration et l'API REST (show_in_rest=true).

Valeurs d'affichage

AS24CI\Taxonomies::get_display_value() est l'assistant canonique pour afficher un champ de véhicule catégoriel sur le frontend. Il privilégie le nom du terme de taxonomie (qui peut être renommé dans l'administration sans perdre le lien avec les données importées) et se rabat sur la valeur brute de postmeta si aucun terme n'est attribué.

Instructions étape par étape

Les types de publications et les taxonomies ne nécessitent pas de configuration manuelle. Les flux de travail suivants sont typiques :

  1. Activer le plugin. WordPress exécute le hook d'activation, qui crée les rôles et les capacités, et vide les règles de réécriture. L'archive /cars/ devient immédiatement disponible.
  2. Exécuter l'importateur. Les annonces importées sont écrites dans le type de publication as24ci_car avec leurs termes de taxonomie attribués par le mapper.
  3. Modifier un véhicule. Ouvrez un véhicule depuis le menu d'administration CMH Cars. Utilisez la boîte de métadonnées d'importation de l'API AutoScout24 pour remplacer les champs importés (sous réserve de la liste en lecture seule ci-dessus) et la boîte de métadonnées Badges pour contrôler quels badges sont affichés.
  4. Gérer les taxonomies. Utilisez les entrées du sous-menu CMH Cars (Marque, Modèle, Type de carrosserie, etc.) pour renommer, fusionner ou masquer des termes. Le fait de renommer un terme met à jour le libellé affiché sur l'ensemble du site car get_display_value() préfère le nom du terme à la valeur brute.
  5. Gérer les leads. Utilisez l'onglet d'administration dédié Leads. Les publications as24ci_lead sous-jacentes ne sont pas exposées dans la liste de publications standard WordPress.

Référence de configuration

ÉlémentEmplacementNotes
Type de publication as24ci_carAS24CI\CPT::POST_TYPEMenu d'administration de premier niveau sous "Cars".
Type de publication as24ci_leadAS24CI\Leads_CPT::POST_TYPEMasqué de l'administration WP standard ; géré via l'onglet Leads.
Taxonomies des véhiculesAS24CI\Taxonomies::TAXONOMY_SLUGS (également via Taxonomies::get_taxonomy_slugs())15 entrées ; non hiérarchiques.
Ensemble de capacités de véhiculeas24ci_car / as24ci_carsMappé via map_meta_cap.
Capacité de l'importateur/réglagesmanage_as24_imports (Plugin::CAP_MANAGE)Accordée uniquement aux administrateurs.
Rôle personnaliséas24ci_editorCréé lors de l'activation s'il est manquant.
Postmeta de galerie manuelle_as24ci_manual_image_idsJamais supprimé par le plugin.
Postmeta de statut de lead_as24ci_lead_statusPar défaut new ; valeurs valides définies comme Leads_CPT::STATUS_*.

Notes opérationnelles

  • Le type de publication (post type) et les taxonomies sont enregistrés sur init. Le code personnalisé qui les lit ne doit pas s'exécuter avant init avec une priorité de 5.
  • Interroger les véhicules via WP_Query est simple (post_type => 'as24ci_car'). Pour les requêtes numériques typées ou par plage, préférez la table dédiée as24_vehicles via AS24CI\Vehicle_Repository, car les requêtes basées sur postmeta peuvent être lentes sur les grands catalogues.
  • Renommer un terme de taxonomie met à jour l'étiquette du frontend immédiatement et ne nécessite pas de ré-importation : l'assistant Taxonomies::get_display_value() lit le nom du terme à la volée.
  • La suppression du plugin lorsque as24ci_delete_data_on_uninstall est défini sur 1 supprime toutes les publications as24ci_car et as24ci_lead ainsi que les pièces jointes suivies dans _as24ci_image_ids. Les pièces jointes manuelles de la galerie et les termes de taxonomie ne sont pas supprimés automatiquement.

Dépannage

  • /cars/ renvoie une erreur 404. Visitez Réglages → Permaliens et enregistrez une fois pour vider les règles de réécriture. Le plugin les vide déjà lors de l'activation, donc un code 404 signifie généralement qu'un plugin ou un thème tiers a remplacé les règles de réécriture.
  • Un utilisateur ayant le rôle Éditeur ne peut pas modifier les véhicules. Les éditeurs ne reçoivent pas automatiquement l'ensemble de capacités as24ci_car. Attribuez-leur le rôle as24ci_editor ou ajoutez les capacités du plugin au rôle Éditeur via votre outil de gestion des rôles.
  • Les modifications d'équipements importés sont perdues lors de l'importation suivante. Le bloc Équipement est géré par l'importateur. Les modifications apportées dans la metabox Équipement peuvent être écrasées à moins qu'elles ne passent par la couche de surcharge manuelle décrite dans le Modèle de données. Vérifiez le comportement dans la version actuelle du plugin avant de vous fier aux modifications manuelles des équipements importés.
  • Les publications de leads apparaissent dans une liste d'administration générique. Le type de publication définit show_ui sur false ; si les leads apparaissent dans une vue d'administration personnalisée, un plugin ou un filtre tiers surcharge le comportement par défaut. Utilisez l'onglet intégré Leads pour la gestion des leads.

Documents connexes