Documentatie · Technische documentatie

Custom Post Types en Taxonomieën

Dit document beschrijft de custom post types en taxonomieën die worden geregistreerd door de ADP Car Market Hub-plugin: welke slugs ze gebruiken, hoe ze zijn geconfigureerd, welke capabilities ze vereisen en hoe ze verschijnen in de WordPress-beheeromgeving.

Wanneer u dit document moet gebruiken

Lees dit document als u het volgende moet doen:

  • Verwijzen naar de exacte post type- en taxonomieslugs in aangepaste query's, templates of thema-code.
  • Begrijpen welke rollen voertuigen en leads kunnen bewerken.
  • Een aangepaste integratie, REST-query of WP_Query plannen op basis van voertuiggegevens.

Zie voor details op kolom- en veldniveau de Database Schema en het Data Model.

Overzicht

De plugin registreert twee custom post types en 15 taxonomieën voor voertuigattributen:

  • as24ci_car — openbaar custom post type dat een enkele voertuigadvertentie vertegenwoordigt. Geregistreerd door AS24CI\CPT.
  • as24ci_lead — privé custom post type dat inzendingen van contactformulieren opslaat. Geregistreerd door AS24CI\Leads_CPT.
  • 15 niet-hiërarchische taxonomieën gekoppeld aan as24ci_car. Geregistreerd door AS24CI\Taxonomies.

Alle vertaalbare tekenreeksen gebruiken het adp-car-market-hub textdomain.

Vereisten of randvoorwaarden

Er is geen aanvullende configuratie vereist om deze objecten te registreren. De post types en taxonomieën worden geregistreerd tijdens de WordPress init actie wanneer de plugin actief is.

Als u voertuigen of leads wilt opvragen via de REST API, let er dan op dat alleen as24ci_car is blootgesteld (show_in_rest is true). Het as24ci_lead post type heeft opzettelijk show_in_rest ingesteld op false.

Het as24ci_car post type

Geregistreerd in AS24CI\CPT::register_post_type() op init met prioriteit

  1. Belangrijkste configuratie:
ArgumentWaarde
publictrue
has_archivetrue
rewrite.slugcars (zodat afzonderlijke URL's /cars/<slug>/ zijn en het archief /cars/ is)
show_in_resttrue
show_in_menutrue (beheermenu op het hoogste niveau)
menu_icondashicons-car
menu_position3.1 (direct onder het CMH Center-menu op positie 3)
supportstitle, editor, excerpt, thumbnail, author
capability_type[ 'as24ci_car', 'as24ci_cars' ]
map_meta_captrue

Omdat map_meta_cap is ingeschakeld, koppelt WordPress generieke capabilities (zoals edit_post) aan de aangepaste enkelvoudige/meervoudige set van de plugin.

Elk voertuig wordt gepubliceerd onder /cars/<slug>/. De importeur zorgt ervoor dat de slug eindigt op de AutoScout24 Listing ID via AS24CI\Importer::ensure_slug_has_listing_id() zodat herhaalde imports de URL stabiel houden. Na activering worden de rewrite-regels eenmalig geflusht zodat het /cars/-archief onmiddellijk werkt. Als het archief een 404-fout retourneert, ga dan naar Instellingen → Permalinks en sla eenmalig op om de rewrite-cache opnieuw op te bouwen.

Capabilities

AS24CI\Plugin::ensure_roles_and_caps() verleent de as24ci_car / as24ci_cars capability-set aan:

  • De aangepaste as24ci_editor-rol (gemaakt bij activering als deze nog niet bestaat).
  • De administrator-rol.

De manage_as24_imports capability (Plugin::CAP_MANAGE) schermt de gebruikersinterface voor de importeur, instellingen, tools en logs af en wordt alleen aan beheerders verleend. WordPress "Redacteur"-gebruikers ontvangen niet automatisch voertuig-capabilities.

Beheer-UI: metaboxen

AS24CI\CPT::register_meta_boxes() voegt twee metaboxen toe aan het bewerkscherm van het voertuig:

  • AutoScout24 API Import (as24ci_details_editable) — gecombineerde metabox die het volgende bevat:
  • De tabbladen "Advertentiegegevens", één per mappinggroep gedefinieerd in AS24CI\Field_Mapping::GROUPS (met uitzondering van Uitrusting, die wordt gerenderd door AS24CI\Equipment_Metabox).
  • Het AutoScout24 Uitrusting-blok (gerenderd door AS24CI\Equipment_Metabox::render_metabox()).
  • De gecombineerde Galerij (handmatige + geïmporteerde afbeeldingen).
  • Badges (as24ci_badges) — metabox in de zijbalk waarmee de redacteur handmatig de automatische detectie voor Nieuw / Gebruikt / Actie kan overschrijven en de vlag "Topaanbieding" kan in- of uitschakelen. Automatische detectie is gebaseerd op de kolommen condition_type, price en list_price van het voertuig; handmatige overschrijvingen worden opgeslagen in de postmeta _as24ci_badge_override_new, _as24ci_badge_override_used, _as24ci_badge_override_sale en _as24ci_top_offer.

Alleen-lezen velden

Velden die uitsluitend door de importeur worden beheerd, zijn in het bewerkingsformulier gemarkeerd als alleen-lezen. De lijst is gedefinieerd in AS24CI\CPT::FORM_READONLY_KEYS en bevat:

  • Identificatie: _as24ci_id, _as24ci_seller_id, _as24ci_seller_vehicle_id, _as24ci_serial_number, _as24ci_vin, _as24ci_external_id, _as24ci_certification_number.
  • Status en tijdstempels: _as24ci_status, _as24ci_status_last_modified, _as24ci_created_date, _as24ci_last_modified_date.
  • Bronvlaggen: _as24ci_live, _as24ci_language, _as24ci_version_identification_method.

Lange waarden (_as24ci_teaser, _as24ci_description, _as24ci_images) worden gerenderd als textareas. Numerieke velden (prijs, kilometerstand, afmetingen, enz.) worden gerenderd als <input type="number">.

Handmatige galerij

De gecombineerde galerijkiezer slaat handmatig geselecteerde bijlage-ID's op in de postmeta-sleutel _as24ci_manual_image_ids. Handmatige galerijbijlagen worden opzettelijk behandeld als eigendom van de gebruiker en worden nooit verwijderd door de verwijderings- of de-installatiecode van de plugin, zelfs niet wanneer geïmporteerde bijlagen worden verwijderd.

Kolommen in de beheerderslijst

AS24CI\CPT voegt aangepaste kolommen toe aan de Cars-beheerderslijst (bijvoorbeeld een miniatuurafbeelding en een "Topaanbieding"-ster). De miniatuurkolom wordt gegroot via inline CSS die wordt geïnjecteerd op het edit.php-scherm voor het post type.

Het as24ci_lead post type

Geregistreerd in AS24CI\Leads_CPT::register_post_type() op init op prioriteit 5. Belangrijkste configuratie:

ArgumentWaarde
publicfalse
show_uifalse
show_in_nav_menusfalse
show_in_restfalse
supportstitle

Lead-berichten zijn niet zichtbaar in de standaard WordPress-beheerderslijsten omdat de plugin een speciaal tabblad voor Leads-beheer biedt. De tekst van de contactformulierinzending wordt opgeslagen als de titel van het bericht (naam van de bezoeker) en in postmeta-sleutels gedefinieerd door 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 (een van new, contacted, closed, spam; standaard ingesteld op new)
  • _as24ci_lead_appointment_date, _as24ci_lead_is_test_drive (voor proefritboekingen)

De geldige statuswaarden zijn beschikbaar als constanten op AS24CI\Leads_CPT (STATUS_NEW, STATUS_CONTACTED, STATUS_CLOSED, STATUS_SPAM).

Voertuigtaxonomieën

AS24CI\Taxonomies::register_all() registreert 15 niet-hiërarchische taxonomieën gekoppeld aan as24ci_car. Elke taxonomie is geregistreerd met dezelfde opties:

ArgumentWaarde
hierarchicalfalse (tag-achtig)
publictrue
show_uitrue
show_in_menutrue (sub-menu onder CMH Cars)
show_in_resttrue
show_in_nav_menusfalse
show_tagcloudfalse
show_admin_columnfalse
rewrite.slugDe taxonomie-slug zelf (bijvoorbeeld as24ci_brand)
query_vartrue

Taxonomiereferentie

Taxonomie-slugEnkelvoudig labelMeervoudig label
as24ci_brandMerkMerken
as24ci_modelModelModellen
as24ci_body_typeCarrosserieCarrosserievormen
as24ci_conditionStaatStaten
as24ci_fuel_typeBrandstoftypeBrandstoftypes
as24ci_transmissionTransmissieTransmissies
as24ci_driveAandrijvingAandrijvingen
as24ci_ext_colorExterieurkleurExterieurkleuren
as24ci_int_colorInterieurkleurInterieurkleuren
as24ci_emission_stdEmissienormEmissienormen
as24ci_energy_labelEnergielabel (A-G)Energielabels (A-G)
as24ci_vehicle_catVoertuigcategorieVoertuigcategorieën
as24ci_warranty_typeGarantietypeGarantietypes
as24ci_warranty_detGarantiedetailsGarantiedetails
as24ci_cyl_arrangeCilinderopstellingCilinderopstellingen

De bovenstaande labels zijn de onvertaalde bronreeksen. De werkelijke labels die in de beheer-UI worden gerenderd, zijn vertaald via het adp-car-market-hub textdomain.

Term-URL's

Omdat elke taxonomie public is en query_var heeft ingeschakeld, zijn termen bereikbaar via standaard WordPress taxonomie-URL's (bijvoorbeeld /as24ci_brand/<term-slug>/). Deze URL's sturen de archieffilters aan en kunnen worden gebruikt in aangepaste navigatiemenu's of thema-widgets.

Weergavewaarden

AS24CI\Taxonomies::get_display_value() is de canonieke helper voor het renderen van een categorisch voertuigveld op de frontend. Het geeft de voorkeur aan de taxonomie-termnaam (die in de beheeromgeving kan worden hernoemd zonder de koppeling met geïmporteerde gegevens te verliezen) en valt terug op de onbewerkte postmeta-waarde als er geen term is toegewezen.

Stapsgewijze instructies

De post types en taxonomieën vereisen geen handmatige installatie. De volgende werkstromen zijn typisch:

  1. Activeer de plugin. WordPress voert de activeringshook uit, die rollen en capabilities aanmaakt en rewrite-regels flusht. Het /cars/-archief is onmiddellijk beschikbaar.
  2. Voer de importeur uit. Geïmporteerde advertenties worden naar het as24ci_car post type geschreven met hun taxonomie-termen toegewezen door de mapper.
  3. Bewerk een voertuig. Open een voertuig vanuit het CMH Cars-beheermenu. Gebruik de AutoScout24 API Import-metabox om geïmporteerde velden te overschrijven (onderworpen aan de hierboven genoemde alleen-lezen lijst) en de Badges-metabox om te bepalen welke badges worden getoond.
  4. Beheer taxonomieën. Gebruik de sub-menu-items van CMH Cars (Merk, Model, Carrosserie, enz.) om termen te hernoemen, samen te voegen of te verbergen. Het hernoemen van een term werkt het weergegeven label over de hele site bij omdat get_display_value() de voorkeur geeft aan de termnaam boven de onbewerkte waarde.
  5. Beheer leads. Gebruik het speciale tabblad Leads in de beheeromgeving. De onderliggende as24ci_lead-berichten worden niet getoond in de standaard WordPress-berichtenlijst.

Configuratiereferentie

ItemWaar het zich bevindtOpmerkingen
as24ci_car post typeAS24CI\CPT::POST_TYPEHoofdmenu in het beheergedeelte onder "Cars".
as24ci_lead post typeAS24CI\Leads_CPT::POST_TYPEVerborgen in de standaard WordPress-beheeromgeving; beheerd via het tabblad Leads.
VoertuigtaxonomieënAS24CI\Taxonomies::TAXONOMY_SLUGS (ook via Taxonomies::get_taxonomy_slugs())15 items; niet-hiërarchisch.
Voertuig-capabilitysetas24ci_car / as24ci_carsGekoppeld via map_meta_cap.
Importer-/instellingencapabilitymanage_as24_imports (Plugin::CAP_MANAGE)Alleen toegekend aan beheerders.
Aangepaste rolas24ci_editorAangemaakt bij activering indien deze ontbreekt.
Handmatige galerij-postmeta_as24ci_manual_image_idsWordt nooit door de plugin verwijderd.
Lead-status postmeta_as24ci_lead_statusStandaard ingesteld op new; geldige waarden gedefinieerd als Leads_CPT::STATUS_*.

Operationele opmerkingen

  • Het post type en de taxonomieën worden geregistreerd op init. Aangepaste code die deze uitleest, mag niet eerder worden uitgevoerd dan init prioriteit 5.
  • Het opvragen van voertuigen via WP_Query is eenvoudig (post_type => 'as24ci_car'). Geef voor getypeerde numerieke of bereikquery's de voorkeur aan de toegewijde as24_vehicles-tabel via AS24CI\Vehicle_Repository, omdat op postmeta gebaseerde query's traag kunnen zijn bij grote catalogi.
  • Het hernoemen van een taxonomieterm werkt het frontend-label onmiddellijk bij en vereist geen hernieuwde import: de helper Taxonomies::get_display_value() leest de termnaam direct uit.
  • Als de plugin wordt verwijderd terwijl as24ci_delete_data_on_uninstall is ingesteld op 1, worden alle as24ci_car- en as24ci_lead-berichten en de bijlagen die worden bijgehouden in _as24ci_image_ids verwijderd. Handmatige galerijbijlagen en taxonomietermen worden niet automatisch verwijderd.

Probleemoplossing

  • /cars/ retourneert een 404-fout. Ga naar Instellingen → Permalinks en sla deze eenmalig op om de rewrite-regels te flushen. De plugin flusht deze al bij activering, dus een 404-fout betekent meestal dat een plugin of thema van derden de rewrite-regels heeft overschreven.
  • Een gebruiker met de rol Redacteur kan geen voertuigen bewerken. Redacteurs ontvangen niet automatisch de as24ci_car capabilityset. Wijs hen de rol as24ci_editor toe of voeg de capabilities van de plugin toe aan de rol Redacteur via uw tool voor rolbeheer.
  • Geïmporteerde wijzigingen in de uitrusting gaan verloren bij de volgende import. Het uitrustingsblok wordt beheerd door de importer. Bewerkingen die in de uitrustingsmetabox worden uitgevoerd, kunnen worden overschreven, tenzij ze via de handmatige overschrijvingslaag lopen die wordt beschreven in Datamodel. Controleer de werking in de huidige plugin-versie voordat u vertrouwt op handmatige bewerkingen van geïmporteerde uitrusting.
  • Lead-berichten verschijnen in een generieke beheerderslijst. Het post type stelt show_ui in op false; als leads in een aangepaste beheerdersweergave verschijnen, overschrijft een plugin of filter van derden de standaardinstelling. Gebruik het ingebouwde tabblad Leads voor leadbeheer.

Gerelateerde documenten