ThemeREX Auto Dealer is a complete vehicle inventory plugin built for dealerships, classifieds sites, and automotive marketplaces.
It registers a trx_ad_listing custom post type that handles cars, trucks, motorcycles, boats, RVs, ATVs, and commercial vehicles in a single inventory. Every standard vehicle attribute — make, model, year, mileage, condition, fuel type, transmission, drivetrain, body style, color, price, and 30+ more — has first-class admin UI, taxonomies, REST endpoints, and Gutenberg/Elementor surfacing.
wp_trx_ad_vehicle_specs for sub-200ms search response on up to 5,000 listings/vehicles, /vehicles/{id}, /dealers, /dealers/{id}, /models?make=N, /search-options, /forms/submit, /leads, /vehicles/{id}/pdf/llms.txt AI-crawler discovery file (standalone mode)ThemeREX Auto Dealer Pro is a separate plugin, distributed from themerex.net, that runs alongside this free plugin (the free plugin is fully functional on its own and keeps running independently). The Pro plugin adds:
Multi-dealer marketplace
trx_ad_dealer + trx_ad_agent user roles with curated capabilitiesLead CRM
trx_ad_lead CPT auto-captures every inquiry, call, WhatsApp tap, and test-drive requestSales-driving features
Inventory power tools
Full details, screenshots, and FAQ: themerex.net/trx-auto-dealer. The Pro plugin installs alongside the free one; the free plugin stays installed — Pro hooks into its registered modules via do_action( 'trx_ad_register_modules' ), so deactivating Pro safely reverts to free behavior with no data loss.
Performance. WordPress’s postmeta table indexes by post_id + meta_key but not by meta_value, so a filter like “Toyota Camry, 2018-2022, under $25k, under 60k miles” forces ten cross-joins against postmeta — fast at 50 listings, painfully slow at 5,000.
This plugin maintains a denormalised wp_trx_ad_vehicle_specs table with one row per listing and ~55 indexed columns. The taxonomies remain the source of truth (you can change a make’s slug and it updates everywhere); the specs row is rebuilt automatically by a save_post_trx_ad_listing hook. Search queries hit the specs table directly via a single SQL statement.
The table is rebuilt idempotently on plugin upgrade and on demand via a re-sync helper.
The free plugin does NOT phone home. No telemetry, no opt-in dialogs, no remote analytics.
The lead capture form sends submissions via wp_mail() to the configured admin email — same channel WordPress uses for password resets. Outbound HTTP requests from the free plugin: none by default. If you enable a map provider, map tiles and geocoding requests occur as documented in the “External services” section below; with the default “Disabled” setting no request ever leaves your site.
The Pro plugin adds VIN decoder (sends VIN to NHTSA over HTTPS, opt-in per request), AI description generator (sends a prompt to OpenAI’s API using YOUR API key, opt-in per request), and outbound webhook (sends lead data to a customer-configured URL, opt-in per webhook). All are off by default.
Every plugin feature is available as a native Elementor widget — no shortcode wrappers. The 17 widgets ship in the free plugin under an “Auto Dealer” category in the Elementor panel:
Plus 10 dynamic tags (VIN, Make, Model, Year, Mileage, Price, Fuel, Status, Gallery, Dealer) for binding any Elementor text/image widget to vehicle data, and theme-builder display conditions for vehicle and dealer archives.
Bundled vendor packages, all GPL-compatible:
All PDF/QR/search processing happens on your server. The optional map features contact external services as documented below.
This plugin can connect to the following external services. None of them are contacted unless you enable the corresponding feature; no service is used with the default settings.
OpenStreetMap Nominatim (geocoding)
Used to convert a dealer’s street address into map coordinates so the dealer can be shown on a map. Contacted only when you set Settings Maps Map Provider to “OpenStreetMap (Leaflet)”: when a dealer is saved without coordinates, the dealer’s address (street, city, state, postcode, country) and your site URL (sent as the User-Agent, as required by Nominatim’s usage policy) are sent to nominatim.openstreetmap.org. Results are cached for 30 days. No visitor data is ever sent.
Service by the OpenStreetMap Foundation: Nominatim usage policy, OSMF privacy policy.
OpenStreetMap tiles (map display)
When the OpenStreetMap provider is enabled, map images (tiles) are loaded in the visitor’s browser from tile.openstreetmap.org, which receives the visitor’s IP address and the map area being viewed, as with any embedded map.
OSMF Tile Usage Policy, OSMF privacy policy.
Google Maps Platform (map display and geocoding)
Contacted only when you set Map Provider to “Google Maps” and enter your own Google API key. The Maps JavaScript API is loaded in the visitor’s browser (Google receives the visitor’s IP address and map interactions), and dealer addresses are sent to the Google Geocoding API with your API key when a dealer is saved without coordinates.
Google Terms of Service, Google Privacy Policy.