{"id":321989,"date":"2026-06-09T17:13:48","date_gmt":"2026-06-09T17:13:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bingorentals\/"},"modified":"2026-06-09T17:31:08","modified_gmt":"2026-06-09T17:31:08","slug":"bingorentals","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bingorentals\/","author":22028878,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.4","stable_tag":"1.5.4","tested":"7.0","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"BingoRentals","header_author":"BitsHost Team","header_description":"Add a car rental booking system to your WordPress site. Embed availability search, reservation forms, and fleet listings \u2014 powered by your BingoRentals API. Supports multi-tenant SaaS, dark theme, language switcher, and smart location caching.","assets_banners_color":"","last_updated":"2026-06-09 17:31:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/bingorentals.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.4":{"tag":"1.5.4","author":"bitsworld","date":"2026-06-09 17:31:08"}},"upgrade_notice":{"1.5.4":"<p>WordPress.org review compliance: &quot;Powered by&quot; credit made opt-in (off by default), non-plugin file removed, shortcode alias removed in favour of prefixed <code>[wpcr_car_rental]<\/code>.<\/p>","1.5.3":"","1.5.2":"<p>Fixes flag emoji rendering on Windows servers. Language switcher now uses SVG flag images.<\/p>","1.5.1":"<p>WordPress Plugin Check compliance update. No functional changes \u2014 safe to update.<\/p>","1.5.0":"<p>Plugin rebranded to BingoRentals. Deactivate and reactivate after updating to ensure settings page loads correctly.<\/p>","1.4.0":"<p>Adds fleet widget, dark theme, and custom color support via shortcode attributes.<\/p>","1.3.0":"<p>Fixes caching bug where empty API responses were cached, causing locations to disappear. Adds debug tools to diagnose API issues.<\/p>","1.2.0":"<p>Added automatic language detection and manual language switcher. Romanian visitors now see Romanian interface automatically.<\/p>","1.1.0":"<p>Critical update for BingoRentals SaaS users. Fixes location caching issues and adds proper multi-tenant support. Standalone users should also update for improved caching.<\/p>","1.0.0":"<p>Initial release of BingoRentals.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Search form for finding available cars","2":"Language switcher and themed form","3":"Admin settings page with tenant configuration","4":"Cache management options"}},"plugin_section":[],"plugin_tags":[269,13605,9914,5075,722],"plugin_category":[40],"plugin_contributors":[239825],"plugin_business_model":[],"class_list":["post-321989","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-car-rental","plugin_tags-cars","plugin_tags-rental","plugin_tags-reservation","plugin_category-calendar-and-events","plugin_contributors-bitsworld","plugin_committers-bitsworld"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/bingorentals.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>BingoRentals allows you to embed a complete car rental booking system on your WordPress website. It connects to your BingoRentals installation via API, enabling customers to:<\/p>\n\n<ul>\n<li>Search for available cars by date and location<\/li>\n<li>View car details, specifications, and pricing<\/li>\n<li>Complete reservations directly on your WordPress site<\/li>\n<li>Receive confirmation emails automatically<\/li>\n<\/ul>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Easy Setup<\/strong> - Just enter your API URL and tenant slug (for SaaS)<\/li>\n<li><strong>SaaS &amp; Standalone Support<\/strong> - Works with both standalone and multi-tenant BingoRentals installations<\/li>\n<li><strong>Shortcode Integration<\/strong> - Add <code>[wpcr_car_rental]<\/code> to any page or post<\/li>\n<li><strong>Auto Language Detection<\/strong> - Detects visitor country via IP (Romania \u2192 Romanian, else English)<\/li>\n<li><strong>Language Switcher<\/strong> - Visitors can manually switch between languages<\/li>\n<li><strong>Customizable Appearance<\/strong> - Light\/dark themes, custom colors<\/li>\n<li><strong>Smart Caching<\/strong> - Locations cached for 1 hour, with manual clear option<\/li>\n<li><strong>Mobile Responsive<\/strong> - Works perfectly on all devices<\/li>\n<li><strong>Multiple Languages<\/strong> - English and Romanian built-in<\/li>\n<\/ul>\n\n<h3>Shortcode Usage<\/h3>\n\n<p>Basic usage:\n    [wpcr_car_rental]<\/p>\n\n<p>With options:\n    [car_rental show_locations=\"true\" show_categories=\"true\" show_lang_switch=\"true\" theme=\"light\" primary_color=\"#0d6efd\"]<\/p>\n\n<p><strong>Available Options:<\/strong><\/p>\n\n<ul>\n<li><code>show_locations<\/code> - Show pickup\/return location dropdowns (true\/false)<\/li>\n<li><code>show_categories<\/code> - Show category filter (true\/false)<\/li>\n<li><code>show_lang_switch<\/code> - Show language switcher buttons (true\/false)<\/li>\n<li><code>theme<\/code> - Color theme: \"light\" or \"dark\"<\/li>\n<li><code>primary_color<\/code> - Custom primary color (hex code)<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following external services:<\/p>\n\n<h4>BingoRentals API (your own installation)<\/h4>\n\n<p>The plugin communicates with the BingoRentals API URL you configure in the settings. This is your own self-hosted or SaaS installation of BingoRentals. Data sent includes: search parameters (dates, location IDs, category), reservation details, and tenant slug. This data is sent whenever a visitor submits the search form or the fleet widget loads. You control this service \u2014 refer to your own privacy policy and terms.<\/p>\n\n<h4>ipapi.co (IP-based language detection)<\/h4>\n\n<p>When automatic language detection is enabled (default: on), the plugin sends the visitor's IP address to ipapi.co to determine their country. This is used solely to select the default display language (Romanian for Romania\/Moldova, English for all others). No personal data beyond the IP address is transmitted. Visitors can override the detected language manually at any time.<\/p>\n\n<ul>\n<li>Service URL: https:\/\/ipapi.co<\/li>\n<li>What is sent: visitor IP address (implicit in the HTTP request)<\/li>\n<li>When: on each page load where the booking form is displayed, if auto-detect language is enabled<\/li>\n<li>Terms of Service: https:\/\/ipapi.co\/terms\/<\/li>\n<li>Privacy Policy: https:\/\/ipapi.co\/privacy\/<\/li>\n<\/ul>\n\n<p>To disable this feature, go to <strong>Settings \u2192 BingoRentals<\/strong> and set <strong>Auto-detect Language<\/strong> to <strong>No<\/strong>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bingorentals<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to Settings \u2192 BingoRentals<\/li>\n<li>Enter your BingoRentals API URL<\/li>\n<li>For SaaS: Enter your tenant slug (e.g., \"acme\" from yoursite.com\/app\/acme\/)<\/li>\n<li>Add <code>[wpcr_car_rental]<\/code> shortcode to any page<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20bingorentals%3F\"><h3>What is BingoRentals?<\/h3><\/dt>\n<dd><p>BingoRentals is a car rental management system available in both standalone and multi-tenant (SaaS) editions. This plugin connects to your BingoRentals installation via API.<\/p><\/dd>\n<dt id=\"what%20is%20a%20tenant%20slug%3F\"><h3>What is a tenant slug?<\/h3><\/dt>\n<dd><p>For SaaS installations, each company has a unique slug (e.g., \"acme\"). Find it in your dashboard URL: yoursite.com\/app\/<strong>acme<\/strong>\/<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20api%20key%3F\"><h3>Do I need an API key?<\/h3><\/dt>\n<dd><p>The API key is optional and depends on your installation. If your API requires authentication, enter the key in the plugin settings.<\/p><\/dd>\n<dt id=\"why%20do%20locations%20disappear%20after%20some%20time%3F\"><h3>Why do locations disappear after some time?<\/h3><\/dt>\n<dd><p>This was fixed in v1.1.0. Locations are now cached for 1 hour. If you still have issues, click \"Clear Cache\" in plugin settings.<\/p><\/dd>\n<dt id=\"how%20does%20auto-language%20detection%20work%3F\"><h3>How does auto-language detection work?<\/h3><\/dt>\n<dd><p>The plugin detects visitor's country via IP using ip-api.com. If the visitor is from Romania, it shows Romanian. Everyone else sees English. Visitors can override this with the language switcher, and their choice is remembered.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20auto-language%20detection%3F\"><h3>Can I disable auto-language detection?<\/h3><\/dt>\n<dd><p>Yes, set \"Auto-detect Language\" to \"No\" in plugin settings. The form will use your default language.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.4<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> \"Powered by\" credit link is now opt-in \u2014 hidden by default, enabled via new admin toggle in Appearance settings<\/li>\n<li><strong>Fixed:<\/strong> <code>wpReview<\/code> non-plugin file removed from distribution; <code>.distignore<\/code> added<\/li>\n<li><strong>Fixed:<\/strong> Backward-compatible <code>[car_rental]<\/code> shortcode alias removed \u2014 only <code>[wpcr_car_rental]<\/code> is registered<\/li>\n<li><strong>Updated:<\/strong> Admin settings page and documentation updated to reference <code>[wpcr_car_rental]<\/code><\/li>\n<\/ul>\n\n<h4>1.5.3<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> Inline <code>&lt;style&gt;<\/code> and <code>&lt;script&gt;<\/code> blocks moved to <code>wp_add_inline_style()<\/code> and <code>wp_add_inline_script()<\/code> via <code>admin_enqueue_scripts<\/code> hook<\/li>\n<li><strong>Fixed:<\/strong> Shortcode callback return now uses <code>esc_html__()<\/code> and <code>esc_url()<\/code> in the API-not-configured error branch<\/li>\n<li><strong>Fixed:<\/strong> Added prefixed shortcode <code>[wpcr_car_rental]<\/code>; <code>[car_rental]<\/code> kept as backward-compatible alias<\/li>\n<li><strong>Fixed:<\/strong> <code>ipapi.co<\/code> external service now documented in readme with terms and privacy policy links<\/li>\n<li><strong>Fixed:<\/strong> Replaced <code>ip-api.com<\/code> reference in readme with the correct service (<code>ipapi.co<\/code>)<\/li>\n<\/ul>\n\n<h4>1.5.2<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> Language switcher flags replaced with SVG images for cross-platform rendering (Windows servers do not render Unicode flag emoji)<\/li>\n<li><strong>Improved:<\/strong> Flag images served as local assets, no external requests<\/li>\n<\/ul>\n\n<h4>1.5.1<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> Full WordPress Plugin Check compliance \u2014 all escaping, unslashing, and sanitization requirements met<\/li>\n<li><strong>Fixed:<\/strong> Deprecated <code>_e()<\/code> \/ <code>__()<\/code> replaced with <code>esc_html_e()<\/code> \/ <code>esc_attr_e()<\/code> throughout admin settings<\/li>\n<li><strong>Fixed:<\/strong> <code>date()<\/code> replaced with <code>gmdate()<\/code> for timezone-safe output<\/li>\n<li><strong>Fixed:<\/strong> <code>wp_create_nonce()<\/code> output now escaped with <code>esc_attr()<\/code> in inline JS<\/li>\n<li><strong>Fixed:<\/strong> <code>parse_url()<\/code> replaced with <code>wp_parse_url()<\/code> in API class<\/li>\n<li><strong>Fixed:<\/strong> <code>error_log()<\/code> calls guarded behind <code>WP_DEBUG<\/code> check<\/li>\n<li><strong>Improved:<\/strong> Plugin Check reports \"No errors found\"<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li><strong>New:<\/strong> Plugin rebranded to <strong>BingoRentals<\/strong><\/li>\n<li><strong>New:<\/strong> Text domain updated to <code>bingorentals<\/code><\/li>\n<li><strong>New:<\/strong> Admin menu and settings page now show BingoRentals branding<\/li>\n<li><strong>Improved:<\/strong> Plugin folder, main file, and assets renamed to match new brand<\/li>\n<li><strong>Improved:<\/strong> All user-facing strings updated to BingoRentals<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li><strong>New:<\/strong> Fleet widget shortcode attribute support (<code>show_categories<\/code>, <code>show_locations<\/code>)<\/li>\n<li><strong>New:<\/strong> Dark theme support via <code>theme=\"dark\"<\/code> shortcode attribute<\/li>\n<li><strong>New:<\/strong> Custom primary color via <code>primary_color<\/code> shortcode attribute<\/li>\n<li><strong>New:<\/strong> Fleet cards with booking links connected to SaaS API<\/li>\n<li><strong>Improved:<\/strong> Shortcode renders inline styles based on admin appearance settings<\/li>\n<li><strong>Improved:<\/strong> Mobile responsive layout for fleet widget<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li><strong>Fixed:<\/strong> Empty API responses no longer cached (was causing permanent \"All Locations\" only)<\/li>\n<li><strong>New:<\/strong> Admin debug panel showing API URL, cache status, and error log<\/li>\n<li><strong>New:<\/strong> \"Test API Now\" button for real-time API testing<\/li>\n<li><strong>Improved:<\/strong> Comprehensive debug logging for troubleshooting<\/li>\n<li><strong>Improved:<\/strong> Better error handling and reporting<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li><strong>New:<\/strong> IP-based automatic language detection (Romania \u2192 Romanian, else English)<\/li>\n<li><strong>New:<\/strong> Language switcher buttons (\ud83c\uddec\ud83c\udde7 EN \/ \ud83c\uddf7\ud83c\uddf4 RO) with localStorage persistence<\/li>\n<li><strong>New:<\/strong> Admin option to enable\/disable auto-detection<\/li>\n<li><strong>New:<\/strong> <code>show_lang_switch<\/code> shortcode attribute<\/li>\n<li><strong>Improved:<\/strong> All form labels now use data-i18n for dynamic switching<\/li>\n<li><strong>Improved:<\/strong> Both EN and RO translations loaded upfront for instant switching<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li><strong>New:<\/strong> SaaS multi-tenant support with tenant_slug setting<\/li>\n<li><strong>New:<\/strong> Smart API URL building for path-based tenant routing (\/api\/app\/tenant\/)<\/li>\n<li><strong>New:<\/strong> Transient caching for locations, settings, extras (1 hour TTL)<\/li>\n<li><strong>New:<\/strong> \"Clear Cache\" button in admin settings<\/li>\n<li><strong>New:<\/strong> Auto-detection of tenant slug from API URL<\/li>\n<li><strong>Fixed:<\/strong> Locations disappearing after time (was caused by missing tenant context)<\/li>\n<li><strong>Fixed:<\/strong> URL construction for SaaS vs standalone installations<\/li>\n<li><strong>Improved:<\/strong> Debug logging when WP_DEBUG is enabled<\/li>\n<li><strong>Improved:<\/strong> Cache auto-clears when saving settings<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release (standalone BingoRentals support only)<\/li>\n<li>Car search by date and location<\/li>\n<li>Real-time availability checking<\/li>\n<li>Booking form with customer details<\/li>\n<li>Light and dark themes<\/li>\n<li>Responsive design<\/li>\n<li>Admin settings page<\/li>\n<li>API connection test<\/li>\n<\/ul>","raw_excerpt":"Embed a car rental booking form on your WordPress site, connected to your BingoRentals installation.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/321989","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=321989"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bitsworld"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=321989"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=321989"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=321989"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=321989"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=321989"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=321989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}