Dokumentation · Technische Dokumentation

Custom Post Types und Taxonomien

Dieses Dokument beschreibt die Custom Post Types und Taxonomien, die durch das ADP Car Market Hub-Plugin registriert werden: welche Slugs sie verwenden, wie sie konfiguriert sind, welche Capabilities sie erfordern und wie sie im WordPress-Adminbereich erscheinen.

Wann dieses Dokument zu verwenden ist

Lesen Sie dieses Dokument, wenn Sie Folgendes tun müssen:

  • Die genauen Post-Type- und Taxonomie-Slugs in benutzerdefinierten Abfragen, Templates oder Theme-Code referenzieren.
  • Verstehen, welche Rollen Fahrzeuge und Leads bearbeiten können.
  • Eine benutzerdefinierte Integration, REST-Abfrage oder WP_Query für Fahrzeugdaten planen.

Für Details auf Spalten- und Feldebene siehe Database Schema und Data Model.

Übersicht

Das Plugin registriert zwei Custom Post Types und 15 Fahrzeugattribut-Taxonomien:

  • as24ci_car — öffentlicher Custom Post Type, der ein einzelnes Fahrzeuginserat darstellt. Registriert durch AS24CI\CPT.
  • as24ci_lead — privater Custom Post Type, der Kontaktformular-Einsendungen speichert. Registriert durch AS24CI\Leads_CPT.
  • 15 nicht-hierarchische Taxonomien, die an as24ci_car angehängt sind. Registriert durch AS24CI\Taxonomies.

Alle übersetzbaren Strings verwenden die Textdomain adp-car-market-hub.

Anforderungen oder Voraussetzungen

Es ist keine zusätzliche Konfiguration erforderlich, um diese Objekte zu registrieren. Die Post Types und Taxonomien werden bei der Aktion WordPress init registriert, wann immer das Plugin aktiv ist.

Wenn Sie Fahrzeuge oder Leads über die REST-API abfragen möchten, beachten Sie, dass nur as24ci_car freigegeben ist (show_in_rest ist true). Der Post Type as24ci_lead hat absichtlich show_in_rest auf false gesetzt.

Der Post Type as24ci_car

Registriert in AS24CI\CPT::register_post_type() auf init mit Priorität 5. Schlüsselkonfiguration:

ArgumentWert
publictrue
has_archivetrue
rewrite.slugcars (sodass einzelne URLs /cars/<slug>/ sind und das Archiv /cars/ ist)
show_in_resttrue
show_in_menutrue (Admin-Menü auf oberster Ebene)
menu_icondashicons-car
menu_position3.1 (direkt unter dem Menü CMH Center an Position 3)
supportstitle, editor, excerpt, thumbnail, author
capability_type[ 'as24ci_car', 'as24ci_cars' ]
map_meta_captrue

Da map_meta_cap aktiviert ist, ordnet WordPress generische Capabilities (wie edit_post) dem benutzerdefinierten Singular-/Plural-Set des Plugins zu.

Jedes Fahrzeug wird unter /cars/<slug>/ veröffentlicht. Der Importer stellt sicher, dass der Slug über AS24CI\Importer::ensure_slug_has_listing_id() mit der Listing ID AutoScout24 endet, damit die URL bei Re-Importen stabil bleibt. Nach der Aktivierung werden die Rewrite-Regeln einmalig geleert, damit das Archiv /cars/ sofort funktioniert. Wenn das Archiv einen 404-Fehler zurückgibt, rufen Sie Einstellungen → Permalinks auf und speichern Sie einmal, um den Rewrite-Cache neu aufzubauen.

Capabilities

AS24CI\Plugin::ensure_roles_and_caps() gewährt das Capability-Set as24ci_car / as24ci_cars an:

  • Die benutzerdefinierte Rolle as24ci_editor (wird bei der Aktivierung erstellt, falls sie nicht existiert).
  • Die Rolle administrator.

Die Capability manage_as24_imports (Plugin::CAP_MANAGE) schützt die Benutzeroberfläche für Importer, Einstellungen, Tools und Logs und wird nur Administratoren gewährt. WordPress "Redakteur"-Benutzer erhalten nicht automatisch Fahrzeug-Capabilities.

Admin-UI: Meta-Boxen

AS24CI\CPT::register_meta_boxes() fügt dem Fahrzeug-Bearbeitungsbildschirm zwei Meta-Boxen hinzu:

  • AutoScout24 API Import (as24ci_details_editable) — kombinierte Meta-Box, die Folgendes enthält:
  • Die Registerkarten "Listing-Daten", eine pro in AS24CI\Field_Mapping::GROUPS definierter Mapping-Gruppe (ausser Ausstattung, die durch AS24CI\Equipment_Metabox gerendert wird).
  • Den Block AutoScout24 Ausstattung (gerendert durch AS24CI\Equipment_Metabox::render_metabox()).
  • Die kombinierte Galerie (manuelle + importierte Bilder).
  • Badges (as24ci_badges) — Sidebar-Metabox, mit der der Bearbeiter die automatische Erkennung für Neu / Gebraucht / Aktion manuell überschreiben und das Flag "Top-Angebot" umschalten kann. Die automatische Erkennung basiert auf den Spalten condition_type, price und list_price des Fahrzeugs; manuelle Überschreibungen werden in den Postmeta-Feldern _as24ci_badge_override_new, _as24ci_badge_override_used, _as24ci_badge_override_sale und _as24ci_top_offer gespeichert.

Schreibgeschützte Felder

Felder, die ausschliesslich vom Importer verwaltet werden, sind im Bearbeitungsformular als schreibgeschützt markiert. Die Liste ist in AS24CI\CPT::FORM_READONLY_KEYS definiert und umfasst:

  • Identifikation: _as24ci_id, _as24ci_seller_id, _as24ci_seller_vehicle_id, _as24ci_serial_number, _as24ci_vin, _as24ci_external_id, _as24ci_certification_number.
  • Status und Zeitstempel: _as24ci_status, _as24ci_status_last_modified, _as24ci_created_date, _as24ci_last_modified_date.
  • Quell-Flags: _as24ci_live, _as24ci_language, _as24ci_version_identification_method.

Lange Werte (_as24ci_teaser, _as24ci_description, _as24ci_images) werden als Textareas gerendert. Numerische Felder (Preis, Kilometerstand, Abmessungen usw.) werden als <input type="number"> gerendert.

Manuelle Galerie

Die kombinierte Galerie-Auswahl speichert manuell ausgewählte Anhang-IDs im Postmeta-Schlüssel _as24ci_manual_image_ids. Manuelle Galerie-Anhänge werden absichtlich als benutzerdefiniert behandelt und niemals durch den Lösch- oder Deinstallationscode des Plugins entfernt, selbst wenn importierte Anhänge gelöscht werden.

Admin-Listen-Spalten

AS24CI\CPT fügt der Admin-Liste Cars benutzerdefinierte Spalten hinzu (beispielsweise ein Vorschaubild und einen "Top-Angebot"-Stern). Die Spalte für das Vorschaubild wird über Inline-CSS skaliert, das auf dem Bildschirm edit.php für den Post Type injiziert wird.

Der Post Type as24ci_lead

Registriert in AS24CI\Leads_CPT::register_post_type() auf init mit Priorität 5. Schlüsselkonfiguration:

ArgumentWert
publicfalse
show_uifalse
show_in_nav_menusfalse
show_in_restfalse
supportstitle

Lead-Beiträge sind in den standardmässigen WordPress Admin-Listen nicht sichtbar, da das Plugin eine eigene Registerkarte für die Leads-Verwaltung bereitstellt. Der Text der Kontaktformular-Einsendung wird als Beitragstitel (Name des Besuchers) und in den durch AS24CI\Leads_CPT::save_lead() definierten Postmeta-Schlüsseln gespeichert:

  • _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 (einer von new, contacted, closed, spam; Standardwert ist new)
  • _as24ci_lead_appointment_date, _as24ci_lead_is_test_drive (für Probefahrt-Buchungen)

Die gültigen Statuswerte sind als Konstanten auf AS24CI\Leads_CPT (STATUS_NEW, STATUS_CONTACTED, STATUS_CLOSED, STATUS_SPAM) verfügbar.


Fahrzeug-Taxonomien

AS24CI\Taxonomies::register_all() registriert 15 nicht-hierarchische Taxonomien, die mit as24ci_car verknüpft sind. Jede Taxonomie wird mit denselben Optionen registriert:

ArgumentWert
hierarchicalfalse (schlagwortartig)
publicfalse
publicly_queryablefalse
show_uitrue
show_in_menutrue (Untermenü unter CMH Cars)
show_in_resttrue
show_in_nav_menusfalse
show_tagcloudfalse
show_admin_columnfalse
rewritefalse (keine Rewrite-Regeln; kein öffentliches Begriffsarchiv)
query_varfalse

Diese Taxonomien sind intern: Sie können im WordPress-Admin bearbeitet und in der REST-API (show_in_rest=true) bereitgestellt werden, verfügen jedoch über keine Frontend-Begriffsarchivseiten. Siehe includes/class-as24ci-taxonomies.php:204-223.

Taxonomie-Referenz

Taxonomie-SlugSingular-BezeichnungPlural-Bezeichnung
as24ci_brandMarkeMarken
as24ci_modelModellModelle
as24ci_body_typeKarosserieformKarosserieformen
as24ci_conditionZustandZustände
as24ci_fuel_typeTreibstoffTreibstoffe
as24ci_transmissionGetriebeGetriebe
as24ci_driveAntriebAntriebe
as24ci_ext_colorAussenfarbeAussenfarben
as24ci_int_colorInnenfarbeInnenfarben
as24ci_emission_stdAbgasnormAbgasnormen
as24ci_energy_labelEnergieetikette (A-G)Energieetiketten (A-G)
as24ci_vehicle_catFahrzeugkategorieFahrzeugkategorien
as24ci_warranty_typeGarantieartGarantiearten
as24ci_warranty_detGarantiedetailsGarantiedetails
as24ci_cyl_arrangeZylinderanordnungZylinderanordnungen

Die oben genannten Bezeichnungen sind die unübersetzten Quell-Strings. Die tatsächlichen Bezeichnungen, die in der Admin-Benutzeroberfläche gerendert werden, werden über die Textdomain adp-car-market-hub übersetzt.

Keine öffentlichen Begriffs-URLs

Da jede Taxonomie mit public=false, publicly_queryable=false, rewrite=false und query_var=false registriert ist, sind Begriffe nicht über eigenständige WordPress-Taxonomie-URLs erreichbar – beispielsweise wird /as24ci_brand/<term-slug>/ nicht aufgelöst und wird keiner Sitemap hinzugefügt (siehe class-as24ci-sitemap.php für die entsprechenden Ausschlüsse für Yoast / Rank Math / Core-Sitemap). Die Fahrzeugfilterung wird durch die eigene Archiv-Abfrage-Logik des Plugins und die denormalisierten Spalten in der Tabelle as24_vehicles gesteuert, nicht durch öffentliche Begriffsarchive. Begriffe stehen dem Admin-Tooling und der REST-API (show_in_rest=true) weiterhin zur Verfügung.

Anzeigewerte

AS24CI\Taxonomies::get_display_value() ist der kanonische Helper für das Rendern eines kategorischen Fahrzeugfelds im Frontend. Er bevorzugt den Namen des Taxonomie-Begriffs (der im Admin-Bereich umbenannt werden kann, ohne die Verknüpfung zu den importierten Daten zu verlieren) und greift auf den rohen Postmeta-Wert zurück, wenn kein Begriff zugewiesen ist.

Schritt-für-Schritt-Anleitung

Die Post-Types und Taxonomien erfordern keine manuelle Einrichtung. Die folgenden Arbeitsabläufe sind typisch:

  1. Plugin aktivieren. WordPress führt den Aktivierungs-Hook aus, der Rollen und Berechtigungen erstellt und die Rewrite-Regeln neu generiert. Das /cars/-Archiv ist sofort verfügbar.
  2. Importer ausführen. Importierte Fahrzeuge werden in den Post-Type as24ci_car geschrieben, wobei ihre Taxonomie-Begriffe durch den Mapper zugewiesen werden.
  3. Fahrzeug bearbeiten. Öffnen Sie ein Fahrzeug über das Admin-Menü CMH Cars. Verwenden Sie die Meta-Box AutoScout24 API Import, um importierte Felder zu überschreiben (vorbehaltlich der oben genannten schreibgeschützten Liste), und die Meta-Box Badges, um zu steuern, welche Badges angezeigt werden.
  4. Taxonomien verwalten. Verwenden Sie die Untermenü-Einträge von CMH Cars (Marke, Modell, Karosserieform usw.), um Begriffe umzubenennen, zusammenzuführen oder auszublenden. Das Umbenennen eines Begriffs aktualisiert die angezeigte Bezeichnung auf der gesamten Website, da get_display_value() den Begriffsnamen gegenüber dem rohen Wert bevorzugt.
  5. Leads verwalten. Verwenden Sie den dedizierten Admin-Tab Leads. Die zugrunde liegenden as24ci_lead-Beiträge werden in der Standard-Post-Liste WordPress nicht angezeigt.

Konfigurationsreferenz

ElementSpeicherortHinweise
as24ci_car Post-TypeAS24CI\CPT::POST_TYPEHauptmenü im Admin-Bereich unter "Cars".
as24ci_lead Post-TypeAS24CI\Leads_CPT::POST_TYPEVor dem Standard-WP-Admin verborgen; verwaltet über den Leads-Tab.
Fahrzeug-TaxonomienAS24CI\Taxonomies::TAXONOMY_SLUGS (auch über Taxonomies::get_taxonomy_slugs())15 Einträge; nicht-hierarchisch.
Fahrzeug-Berechtigungssatzas24ci_car / as24ci_carsZugeordnet über map_meta_cap.
Importer-/Einstellungsberechtigungmanage_as24_imports (Plugin::CAP_MANAGE)Nur Administratoren gewährt.
Benutzerdefinierte Rolleas24ci_editorWird bei der Aktivierung erstellt, falls nicht vorhanden.
Manuelle Galerie-Postmeta_as24ci_manual_image_idsWird vom Plugin niemals entfernt.
Lead-Status-Postmeta_as24ci_lead_statusStandardwert ist new; gültige Werte sind als Leads_CPT::STATUS_* definiert.

Operational notes

  • The post type and taxonomies are registered on init. Custom code that reads them must run no earlier than init priority 5.
  • Querying vehicles via WP_Query is straightforward (post_type => 'as24ci_car'). For typed numeric or range queries, prefer the dedicated as24_vehicles table via AS24CI\Vehicle_Repository, because postmeta-based queries can be slow on large catalogues.
  • Renaming a taxonomy term updates the frontend label immediately and does not require a re-import: the helper Taxonomies::get_display_value() reads the term name on the fly.
  • Removing the plugin while as24ci_delete_data_on_uninstall is set to 1 deletes all as24ci_car and as24ci_lead posts and the attachments tracked in _as24ci_image_ids. Manual gallery attachments and taxonomy terms are not removed automatically.

Fehlerbehebung

  • /cars/ gibt 404 zurück. Rufen Sie Einstellungen → Permalinks auf und speichern Sie einmal, um die Rewrite-Regeln neu zu generieren. Das Plugin führt dies bereits bei der Aktivierung durch, sodass ein 404-Fehler in der Regel bedeutet, dass ein Drittanbieter-Plugin oder -Theme die Rewrite-Regeln überschrieben hat.
  • Ein Benutzer mit der Rolle Redakteur kann keine Fahrzeuge bearbeiten. Redakteure erhalten nicht automatisch das as24ci_car-Berechtigungsset. Weisen Sie ihnen entweder die Rolle as24ci_editor zu oder fügen Sie die Berechtigungen des Plugins über Ihr Rollenverwaltungstool zur Rolle Redakteur hinzu.
  • Importierte Ausstattungsänderungen gehen beim nächsten Import verloren. Der Ausstattungsblock wird vom Importer verwaltet. Änderungen, die in der Ausstattungs-Metabox vorgenommen werden, können überschrieben werden, es sei denn, sie laufen über die manuelle Override-Ebene, die im Datenmodell beschrieben ist. Überprüfen Sie das Verhalten in der aktuellen Plugin-Version, bevor Sie sich auf manuelle Bearbeitungen der importierten Ausstattung verlassen.
  • Lead-Beiträge erscheinen in einer generischen Admin-Liste. Der Post-Type setzt show_ui auf false; wenn Leads in einer benutzerdefinierten Admin-Ansicht erscheinen, überschreibt ein Drittanbieter-Plugin oder ein Filter den Standard. Verwenden Sie den integrierten Tab Leads für das Lead-Management.

Verwandte Dokumente