Inventory Presser


Manage and market a dealership inventory

  • Supports automobiles, motorcycles, ATVs, RVs, and boats
  • Manage multiple lot locations and maintain separate phone numbers & hours for each
  • VIN-decoding add-on available
  • Categorizes inventory by type, body style, fuel, transmission, drive type, availability, new or used, location, and more
  • Includes blocks, shortcodes, and widgets including vehicle sliders and inventory grids

Integrates with other plugins

  • Import any CSV file with WP All Import
  • Contact Form 7 form tag adds vehicles to lead emails
  • Elementor Dynamic Tags add-on available

Built the right way and developer-friendly


  • This is a vehicle post archive showing post title, full size featured image, price, vehicle attribute table, carfax button, and link to vehicle post single.
  • This is an inventory grid showing featured image thumbnails and post titles. A full inventory link takes users to the vehicle post archive.
  • This is a list of vehicles in the administrator dashboard that the user sees when she clicks the Vehicles or All Vehicles menu items. Each vehicle is listed by year, make, model, trim, stock number, color, odometer, price, and photo count. If the vehicle has photos, a thumbnail is also shown. This screen shot was taken on version 3.1.0.
  • This is the edit screen that adds or edits a single vehicle. The post content box is demoted to handle only the sentence-form vehicle description, and the entire edit screen is enhanced to support vehicle attributes. This screen shot was taken on version 3.1.0.
  • This screenshot shows a vehicle post in the WordPress block editor. An editor sidebar for the Inventory Presser plugin is expanded and contains vehicle attribute fields. An arrow points to a button with a key on it that reveals the editor sidebar.
  • This screenshot shows a vehicle archive on the Twenty Twenty theme before any customization.


This plugin provides 9 blocks.

  • Hull Material
  • Odometer
  • Length
  • Body Style
  • Engine
  • Interior Color
  • Last Modified
  • Color
  • Beam


  1. Upload the inventory-presser directory to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Read this plugin’s Frequently Asked Question called “Will Inventory Presser work with my theme?” to learn how vehicles can best be displayed


How much does this plugin cost?

This plugin is free and open source. Free and paid add-ons & services are available at

Does it decode VINs?

Not for free. A VIN decoder add-on is available at

Can I import my inventory into this system?

Yes. We use the WordPress REST API to deliver inventory updates. Read how we do it. Vehicles in Inventory Presser are stored in a custom post type using meta fields, taxonomy terms, and photo attachments, and many CSV/spreadsheet importer plugins like WP All Import work with custom post types. If imports sound challenging, Friday Systems (that’s us) feeds hundreds of sites running this plugin. It may be easier to let Friday Systems handle the last leg for a monthly fee.

Will Inventory Presser work with my theme?

Yes. Check out our Theme Compatibility Guide. If your theme does not include templates to display listing pages and vehicle detail pages, the plugin will provide the markup for those pages automatically. There are shortcodes like [invp_archive] and [invp_single_vehicle] as a last resort. A number of Template Tags make designing custom templates easy.


Cotmeh 30, 2022
It's a very lightweight plugin with plenty of capabilities for customization. Corey, the plugin creator, has been very helpful in answering questions as my team and I implemented the plugin in our new dealership website.
Read all 1 review

Contributors & Developers

“Inventory Presser” is open source software. The following people have contributed to this plugin.


Translate “Inventory Presser” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • [Added] Adds a filter invp_get_the_odometer to filter the value returned by the invp_get_the_odometer() template tag.
  • [Fixed] Fixes the way queries are edited during searches to avoid name collisions.


  • [Added] Wraps strings in filters in the was_now_discount pricing display option so “Retail”, “Now”, and “You Save” strings can be changed by other plugins using the invp_price_was_now_discount_retail, invp_price_was_now_discount_now, and invp_price_was_now_discount_save filters.
  • [Fixed] Applies the invp_price_display filter to all return paths of the invp_get_the_price() template tag.


  • [Added] Adds a feature enabled by default: Adds a gallery block to new vehicle posts with a specific CSS class that allows users to upload and reorder photos on vehicle posts in the block editor. This is merging the invp-photo-arranger feature plugin into Inventory Presser core.
  • [Fixed] Makes more strings translateable. Escapes strings for output on the plugin settings page.
  • [Fixed] Bug fix when changing attachment URLs to have cache-busting hash querystrings. If the post ID does not point to an attachment, exit early.
  • [Fixed] Bug fixes in the maximum price filter widget. Avoid warnings when no widget settings are saved for the instance.
  • [Fixed] CSS tweak for thumbnails in the vehicle posts list in the dashboard.


  • [Added] Adds a minimum PHP version directive to this file of 7.0.0 to support the null coalescing operator.
  • [Added] Adds a template tag invp_get_raw_msrp() and filter invp_get_raw_msrp.
  • [Added] Adds a template tag invp_get_the_dealer_id().
  • [Added] Adds a postmeta field inventory_presser_certified_preowned to the vehicle post type and a template tag invp_is_certified_preowned().
  • [Fixed] Fixes a bug in the Maximum Price Filter widget to make it compatible with the new block widgets feature in the dashboard.
  • [Fixed] Fixes a bug that caused vehicle thumbnail photos to break out of the posts table at the Vehicles dashboard page.
  • [Fixed] Fixes a bug that prevented invp_get_the_photos() from including the urls array key when a single size of large was passed.
  • [Fixed] Fixes bugs when calling http_build_query() for compatibility with PHP 8.1.
  • [Fixed] Fixes a bug in the uninstaller that prevented the plugin from being deleted.


  • [Fixed] Cache-busting photo URLs are now compatible with any image file type rather than just JPG and PNG.
  • [Fixed] Fixes a bug when changing the title of additional listings pages.
  • [Changed] Changes the tested up to version number to 6.0.3.


  • [Added] Adds a page title setting to additional listings pages so users can easily change “Vehicles” or “Vehicles Archive” to a title of their choosing.
  • [Added] Adds a shortcode [invp_sort_by] that creates a dropdown to let users reorder listings pages.
  • [Added] Adds a filter invp_get_raw_price to let developers change the output of the template tag invp_get_raw_price().
  • [Changed] Changes the tested up to version number to 6.0.2.


  • [Fixed] Fixes a bug in the add-on updater that prevented the update notices from looking like core update nags on the plugins list.
  • [Fixed] Fixes a bug in the add-on updater that prevented users from seeing our “License key is missing at Vehicles → Options” message.
  • [Fixed] Fixes a bug introduced in 14.2.1 that output some JavaScript to non-logged in users.


  • [Fixed] Reverts to json_decode() from wp_json_decode(), a bug introduced in 14.2.1.


  • [Added] Adds two template tags invp_get_the_location_state() and invp_get_the_location_zip()
  • [Added] Wraps vehicle prices in a element in the [invp_inventory_grid] shortcode so they can be more easily styled
  • [Fixed] Bumps npm package terser from 5.13.1 to 5.14.2
  • [Fixed] Applies the WordPress coding standard to all PHP files


  • [Added] Adds a Contact Form 7 mail tag [invp_adf_timestamp] to help insert ISO 8601 timestamps into ADF XML lead emails.
  • [Added] Adds a Contact Form 7 mail tag [invp_adf_vehicle] to help insert vehicles into ADF XML lead emails.
  • [Added] Adds a “No vehicles found.” message to the [invp_archive] shortcode when there are no vehicle posts that satisfy the query.
  • [Added] Adds a default false value for the use_carfax setting so it shows up in REST at /wp-json/invp/v1/settings consistently.
  • [Added] Wraps the vehicle YMM string in a link in email sent using our Contact Form 7 form-tag [invp_vehicle].
  • [Fixed] Fixes a bug where if a vehicle attribute stored in meta was deleted, the change would not be mirrored in the corresponding taxonomy.
  • [Changed] Changes the tested up to version number to 6.0.1.


  • [Added] Integrates WP All Import. Detects and saves piped options in the inventory_presser_options_array meta field. Marks all imported vehicles for sale in the availabilities taxonomy if they do not already have a relationship in the taxonomy.
  • [Added] Integrates Contact Form 7. Adds a form tag [invp_vehicle] to help users put vehicle drop downs or hidden elements in forms.
  • [Added] Adds a shortcode [invp_attribute_table] to make the feature more accessible to templates. Re-orders some attributes in the table to better suit a two-column layout.
  • [Added] Adds a filter invp_single_sections to let users edit or add to the Description and Features sections of [invp_single_vehicle]
  • [Fixed] No longer changes thumbnail photo sizes in the dashboard’s list of vehicles at wp-admin/edit.php?post_type=inventory_vehicle
  • [Changed] Improves the way [invp_single_vehicle] organizes content sections with CSS and HTML changes.
  • [Removed] Removes AutoCheck integration in [invp_single_vehicle] and [invp_archive_vehicle]. The AutoCheck add-on now adds the button to the invp_single_buttons and invp_archive_buttons hooks.
  • [Removed] Removes the [iframe] shortcode. This was replaced with [invp_iframe].
  • [Removed] Removes all deprecated methods and constants including the entire vehicle class. All items have had replacements for many months.


  • [Fixed] Bug fix. invp_get_the_location_sentence() assumed the site had at least one location term before this fix.
  • [Fixed] Allows invp_get_the_photos() to find attachments to the post even if they do not have our sequencing meta value. Relies on the post_date for sequence instead.
  • [Fixed] No longer attempts to change a query order by in get_terms() if there are no taxonomy names provided to the filter callback.
  • [Changed] Changes the slider widget to show only 2 vehicles at a time on smaller devices.
  • [Changed] Changes tested up to version number to 6.0.0.


  • [Added] Adds a minimized version of the leaflet.js CSS file. This file is used by the Map widget.
  • [Fixed] Bug fix when resizing flexslider images to avoid stretching images wider than their full size dimensions.


  • [Added] Adds template tags invp_get_the_last_modified() and invp_get_raw_last_modified()
  • [Added] Registers all scripts and styles on the enqueue_block_editor_assets hook so blocks can use them
  • [Fixed] Adds & implements iFrameResizer.js in the [invp_iframe] shortcode instead of relying on the themes like _dealer to provide the library and resize iframes
  • [Fixed] Bug fix when looking for an SVG file path in the Carfax Widget
  • [Fixed] Bug fix in the invp_get_the_transmission_speeds() template tag. The single $post_id argument is now optional, matching all other template tags.


  • [Added] Adds Carfax settings to the inv_blocks JavaScript object so that upcoming blocks can make use of the values.
  • [Fixed] Bug fix in the template tag invp_get_the_fuel_economy_value(), specify fuel 1 or 2 when retrieving the value.
  • [Fixed] Adds CSS classes to the NextGear inspection report button so it matches the View Details button in archives.
  • [Fixed] Fixes the Sort Vehicles By setting when “Date entered” or “Last modified” is chosen. These keys did not previously work.
  • [Fixed] Fixes the registration of the new REST route at /wp-json/invp/v1/settings to specify a missing permission_callback.
  • [Fixed] Bug fix in block category creation. Instead of all blocks ending up in “Widgets”, they now correctly group under “Inventory Presser”. This was intended for 13.7.0 but didn’t get shipped somehow.
  • [Fixed] Avoid throwing warnings in the Map, Inventory Grid, and Inventory Slider widgets when widget settings and attributes are not provided or are unavailable.
  • [Fixed] Allows our template provider class to help vehicle details pages work on more themes out of the box. No longer limits our hook on the_content to only run once for themes that fetch post content and apply the filter multiple times.
  • [Fixed] Fixes the plugin update nag HTML for add-ons to better match the core plugin update nags. Removes a condition clause that was preventing the nag from showing on network admin plugin pages.
  • [Changed] Changes tested up to version number to 5.9.2.


  • [Added] Adds a shortcode [invp_vin] that outputs the value of the template tag invp_get_the_vin()
  • [Added] Adds a REST API route at /wp-json/invp/v1/settings to expose the core “Show Carfax buttons” switch
  • [Fixed] Bug fix in block category creation. Instead of all blocks ending up in “Widgets”, they now correctly group under “Inventory Presser”
  • [Fixed] Prevents non-numeric characters from being entered in the Odometer field in the editor sidebar
  • [Fixed] Prevent the Delete all Vehicles feature from deleting vehicles more than once if the user reloads the page after using the feature
  • [Fixed] Starts populating the inventory_presser_date_entered meta value when vehicles are saved


  • [Added] Adds a template tag invp_is_featured()
  • [Fixed] Allows taxonomy filters to work when using the [invp_archive] shortcode at /inventory
  • [Fixed] Adds support for querystring filters min_price, max_price, and max_odometer to the [invp_archive] shortcode
  • [Fixed] Adds support for the Sort By setting and querystring parameters orderby and order to the [invp_archive] shortcode
  • [Changed] Changes the “was now discount” price display to fallback to showing the price when the MSRP is empty or the difference is not a positive discount. Previously, the setting would fallback to “Call for Price” even if a price value was available.