{"id":330237,"date":"2026-06-28T06:41:26","date_gmt":"2026-06-28T06:41:26","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/rentops-lite\/"},"modified":"2026-06-28T06:40:55","modified_gmt":"2026-06-28T06:40:55","slug":"sullivanpro-rental-operations-manager","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sullivanpro-rental-operations-manager\/","author":23459175,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.7","stable_tag":"1.2.7","tested":"7.0","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"SullivanPro Rental Operations Manager","header_author":"SullivanPro","header_description":"Flexible rental inventory, customer, booking, checkout, return, and CSV management for WordPress.","assets_banners_color":"5e6c81","last_updated":"2026-06-28 06:40:55","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":24,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.7":{"tag":"1.2.7","author":"sullivanpro","date":"2026-06-28 06:40:55"}},"upgrade_notice":{"1.2.7":"<p>Makes the existing booking nonce protection explicit inside the booking save handler. No data or functionality changes.<\/p>","1.2.6":"<p>Hardens request sanitization and ensures booking hooks never receive raw form input. Existing data and functionality are preserved.<\/p>","1.2.5":"<p>Updates the official Get Pro purchase link without overwriting custom purchase URLs.<\/p>","1.2.4":"<p>Brand-only rename for WordPress.org. Existing data and integrations are preserved.<\/p>","1.2.3":"<p>Adds the live SullivanPro Rental Operations Pro purchase link throughout the Lite plugin. Existing data and custom settings are preserved.<\/p>","1.2.2":"<p>Fixes the dashboard database error and Settings page fatal error. Existing data is preserved.<\/p>","1.2.0":"<p>Adds automatic unit status synchronization, live availability checking, the redesigned address-enabled booking form, and improved email sender alignment. Existing rental data is preserved. SullivanPro Rental Operations Pro 1.0.1 or newer is recommended.<\/p>","1.1.0":"<p>Adds selectable English, German, and Hungarian interfaces, configurable booking notification delivery, and the localized Get Pro page. Existing rental data is preserved.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3588531,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3588531,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3588531,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3588531,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3588531,"resolution":"1","location":"assets","locale":"","width":1849,"height":851},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3588531,"resolution":"2","location":"assets","locale":"","width":1870,"height":841},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3588531,"resolution":"3","location":"assets","locale":"","width":1849,"height":851},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3588531,"resolution":"4","location":"assets","locale":"","width":1844,"height":853}},"screenshots":[]},"plugin_section":[],"plugin_tags":[269,21157,269196,6601,5075],"plugin_category":[40,45],"plugin_contributors":[265743],"plugin_business_model":[],"class_list":["post-330237","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-csv-import","plugin_tags-equipment-rental","plugin_tags-inventory","plugin_tags-rental","plugin_category-calendar-and-events","plugin_category-ecommerce","plugin_contributors-sullivanpro","plugin_committers-sullivanpro"],"banners":{"banner":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/banner-772x250.png?rev=3588531","banner_2x":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/banner-1544x500.png?rev=3588531","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/icon-128x128.png?rev=3588531","icon_2x":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/icon-256x256.png?rev=3588531","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/screenshot-1.png?rev=3588531","caption":""},{"src":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/screenshot-2.png?rev=3588531","caption":""},{"src":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/screenshot-3.png?rev=3588531","caption":""},{"src":"https:\/\/ps.w.org\/sullivanpro-rental-operations-manager\/assets\/screenshot-4.png?rev=3588531","caption":""}],"raw_content":"<!--section=description-->\n<p>SullivanPro Rental Operations Manager is a general-purpose rental management plugin for WordPress. It is designed for tool rental, vehicle rental, event equipment, clothing, electronics, sports equipment, furniture, toys, and other businesses that rent physical items.<\/p>\n\n<p>The plugin works without WooCommerce. An optional WooCommerce product ID can be linked to a rental item type when WooCommerce is active.<\/p>\n\n<h4>Main features<\/h4>\n\n<ul>\n<li>Built-in English, German, and Hungarian interface language selection, with English as the default.<\/li>\n<li>Customizable rental item and inventory unit terminology.<\/li>\n<li>Rental item types with category, SKU, description, daily rate, hourly rate, and deposit.<\/li>\n<li>Individual inventory units with unique code, serial number, status, location, condition, usage value, and notes.<\/li>\n<li>Custom inventory fields for industry-specific data.<\/li>\n<li>Customer database.<\/li>\n<li>Manual bookings with one or more rental lines.<\/li>\n<li>Date and time overlap validation.<\/li>\n<li>Quantity availability validation.<\/li>\n<li>Optional assignment of a specific physical unit.<\/li>\n<li>Pending, confirmed, checked out, returned, cancelled, and overdue booking states.<\/li>\n<li>Automatic inventory unit status synchronization: confirmed bookings reserve assigned units, checkout marks them checked out, and return or cancellation releases them.<\/li>\n<li>One-click confirmation, checkout, and return actions.<\/li>\n<li>Deposit amount and deposit status tracking.<\/li>\n<li>Dashboard with active, pending, overdue, available, and maintenance counts.<\/li>\n<li>CSV import wizard with delimiter detection and column mapping.<\/li>\n<li>Hungarian Excel-style semicolon-delimited CSV support.<\/li>\n<li>Existing record updates by SKU, inventory code, or serial number.<\/li>\n<li>Create multiple physical units from a quantity column.<\/li>\n<li>Create custom inventory fields from previously unknown CSV columns.<\/li>\n<li>Inventory CSV export with custom field values.<\/li>\n<li>Frontend rental catalog shortcode.<\/li>\n<li>Redesigned responsive frontend booking request shortcode with address capture.<\/li>\n<li>Live period availability checks before a visitor can submit a request.<\/li>\n<li>Frontend status feedback distinguishes available, reserved, checked-out, mixed, and unavailable inventory.<\/li>\n<li>Configurable notification email address for new website requests.<\/li>\n<li>Configurable same-domain sender identity and customer Reply-To headers for improved mail alignment.<\/li>\n<li>Dedicated localized Get Pro page linked to the official SullivanPro Rental Operations Pro Gumroad product.<\/li>\n<li>Theme-overridable frontend templates.<\/li>\n<li>Addon-ready actions and filters.<\/li>\n<li>No tracking and no external service dependency.<\/li>\n<\/ul>\n\n<h4>Shortcodes<\/h4>\n\n<pre><code>[rentops_catalog]\n<\/code><\/pre>\n\n<p>Optional attributes:<\/p>\n\n<ul>\n<li><code>category=\"Event equipment\"<\/code><\/li>\n<li><code>columns=\"3\"<\/code><\/li>\n<li><p><code>show_available=\"yes\"<\/code><\/p>\n\n<p>[rentops_booking_request]<\/p><\/li>\n<\/ul>\n\n<p>Optional attributes:<\/p>\n\n<ul>\n<li><code>asset_type_id=\"12\"<\/code><\/li>\n<\/ul>\n\n<h4>CSV import<\/h4>\n\n<p>The importer accepts UTF-8 CSV files with comma, semicolon, or tab delimiters. It can detect the delimiter automatically.<\/p>\n\n<p>Typical source columns:<\/p>\n\n<ul>\n<li>name<\/li>\n<li>sku<\/li>\n<li>category<\/li>\n<li>description<\/li>\n<li>daily_rate<\/li>\n<li>hourly_rate<\/li>\n<li>deposit<\/li>\n<li>quantity<\/li>\n<li>item_code<\/li>\n<li>serial_number<\/li>\n<li>status<\/li>\n<li>location<\/li>\n<li>condition<\/li>\n<li>usage_value<\/li>\n<li>notes<\/li>\n<\/ul>\n\n<p>A sample CSV is included in the plugin at <code>assets\/sample-inventory.csv<\/code> and can also be downloaded from the CSV Import \/ Export page.<\/p>\n\n<h4>SullivanPro Rental Operations Pro<\/h4>\n\n<p>Upgrade to SullivanPro Rental Operations Pro with lifetime access: https:\/\/csabavibe5.gumroad.com\/l\/sullivanpro-rental-operations-manager<\/p>\n\n<h4>Addon architecture<\/h4>\n\n<p>SullivanPro Rental Operations Manager exposes actions and filters for separate addons. Premium functionality can be distributed as a standalone plugin without placing inactive premium code in the Lite package.<\/p>\n\n<p>Important hooks include:<\/p>\n\n<ul>\n<li><code>rentops_lite_loaded<\/code><\/li>\n<li><code>rentops_lite_booking_saved<\/code><\/li>\n<li><code>rentops_lite_booking_status_changed<\/code><\/li>\n<li><code>rentops_lite_csv_imported<\/code><\/li>\n<li><code>rentops_lite_booking_statuses<\/code><\/li>\n<li><code>rentops_lite_item_statuses<\/code><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>sullivanpro-rental-operations-manager<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate SullivanPro Rental Operations Manager.<\/li>\n<li>Open the new SullivanPro Rental Operations menu in the WordPress dashboard.<\/li>\n<li>Review SullivanPro Rental Operations &gt; Settings and choose the interface language, notification email, terminology, and currency.<\/li>\n<li>Add rental item types and physical inventory units, or import them from CSV.<\/li>\n<li>Add <code>[rentops_catalog]<\/code> and <code>[rentops_booking_request]<\/code> to pages if frontend functionality is needed.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20sullivanpro%20rental%20operations%20manager%20require%20woocommerce%3F\"><h3>Does SullivanPro Rental Operations Manager require WooCommerce?<\/h3><\/dt>\n<dd><p>No. It works as a standalone rental management system. When WooCommerce is active, a rental item type can optionally link to a WooCommerce product.<\/p><\/dd>\n<dt id=\"can%20it%20manage%20different%20rental%20industries%3F\"><h3>Can it manage different rental industries?<\/h3><\/dt>\n<dd><p>Yes. The core uses neutral rental item and inventory unit concepts. Labels can be changed and custom fields can store industry-specific information such as registration number, size, color, power, insurance date, or cleaning status.<\/p><\/dd>\n<dt id=\"can%20multiple%20identical%20units%20be%20managed%20separately%3F\"><h3>Can multiple identical units be managed separately?<\/h3><\/dt>\n<dd><p>Yes. Create one rental item type and any number of uniquely identified physical inventory units under it.<\/p><\/dd>\n<dt id=\"does%20it%20prevent%20double%20booking%3F\"><h3>Does it prevent double booking?<\/h3><\/dt>\n<dd><p>Yes. The booking service validates overlapping periods, requested quantity, and specifically assigned inventory units before saving. The public form also performs a live availability check for the selected period. Pending website requests do not reserve inventory until an administrator confirms them.<\/p><\/dd>\n<dt id=\"can%20i%20import%20an%20existing%20inventory%20spreadsheet%3F\"><h3>Can I import an existing inventory spreadsheet?<\/h3><\/dt>\n<dd><p>Yes. Export the spreadsheet as CSV, upload it, and map its columns in the import wizard. Unknown columns can be converted to custom fields.<\/p><\/dd>\n<dt id=\"is%20deleting%20plugin%20data%20automatic%3F\"><h3>Is deleting plugin data automatic?<\/h3><\/dt>\n<dd><p>No. Data is preserved by default. Complete removal happens only when the \"Delete all SullivanPro Rental Operations data when the plugin is uninstalled\" setting is enabled before uninstalling.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Added an explicit action-specific nonce check inside the booking save handler so static security analysis can verify protection before form data is accessed.<\/li>\n<li>No booking behavior, stored data, hooks, or public interfaces were changed.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Sanitized nested booking and public request arrays immediately at the request boundary.<\/li>\n<li>Added strict allowlists and validation for booking sources, channels, statuses, pricing units, dates, IDs, quantities, and monetary values.<\/li>\n<li>Ensured the <code>rentops_lite_booking_saved<\/code> action receives only sanitized, validated, and normalized booking data.<\/li>\n<li>Applied immediate sanitization to all nested admin form arrays.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Updated the built-in SullivanPro Rental Operations Pro Gumroad purchase URL.<\/li>\n<li>Existing installations using the previous official URL are migrated automatically.<\/li>\n<li>Custom Pro purchase URLs remain unchanged.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Renamed the plugin to SullivanPro Rental Operations Manager and updated the WordPress.org slug\/text domain.<\/li>\n<li>Internal identifiers, database tables, options, hooks, shortcodes, and stored data remain unchanged for compatibility.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Added the official SullivanPro Rental Operations Pro Gumroad purchase URL as the built-in default.<\/li>\n<li>Linked the plugin action link and localized Get Pro page directly to the live product.<\/li>\n<li>Added the visible product URL below the Get Pro button.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fixed the dashboard booking list SQL ordering so qualified columns are not escaped as a single identifier.<\/li>\n<li>Fixed a Settings page fatal error on installations where the WordPress <code>required()<\/code> helper is unavailable.<\/li>\n<li>Changed the plugin author name to SullivanPro.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Annotated verified WordPress 6.4+ <code>%i<\/code> prepared queries to prevent Plugin Check 2.0 false positives.<\/li>\n<li>Improved uninstall schema-change annotation.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added automatic inventory unit assignment and status synchronization.<\/li>\n<li>Confirmed bookings now mark assigned physical units as reserved.<\/li>\n<li>Checked-out and overdue bookings mark assigned units as checked out.<\/li>\n<li>Returned, cancelled, deleted, or released bookings make units available again unless a unit is manually blocked for maintenance, unavailable, or retired.<\/li>\n<li>Added live frontend availability checking for selected item, quantity, and rental period.<\/li>\n<li>Redesigned the booking request form with a responsive, theme-neutral interface.<\/li>\n<li>Added customer address capture to website requests and notification emails.<\/li>\n<li>Added configurable sender name and same-domain sender email settings for better mail alignment.<\/li>\n<li>Added an hourly background synchronization task for overdue bookings and inventory status repair.<\/li>\n<li>Fixed the reported Plugin Check input validation, nonce, escaping, i18n, global naming, hidden-file, and prepared SQL findings.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added a plugin-specific interface language selector.<\/li>\n<li>Added complete bundled English, German, and Hungarian translations.<\/li>\n<li>English is now the default SullivanPro Rental Operations interface language regardless of the WordPress site language.<\/li>\n<li>Added a configurable booking notification email field with validation.<\/li>\n<li>Added a localized Get Pro admin menu and feature comparison page.<\/li>\n<li>Added an optional Gumroad purchase URL setting for the future Pro addon.<\/li>\n<li>Added automatic settings migration for existing installations.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial Lite release.<\/li>\n<li>Added rental item type and physical unit management.<\/li>\n<li>Added customizable terminology and custom inventory fields.<\/li>\n<li>Added customer and booking management.<\/li>\n<li>Added availability and overlap validation.<\/li>\n<li>Added checkout, return, overdue, and deposit states.<\/li>\n<li>Added CSV import mapping and export.<\/li>\n<li>Added frontend catalog and booking request shortcodes.<\/li>\n<li>Added addon hooks and theme template overrides.<\/li>\n<\/ul>","raw_excerpt":"Flexible rental inventory, customer, booking, checkout, return, and CSV management for any type of rental business.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/330237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=330237"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sullivanpro"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=330237"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=330237"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=330237"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=330237"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=330237"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=330237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}