{"id":321989,"date":"2026-06-09T17:13:48","date_gmt":"2026-06-09T17:13:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bingorentals\/"},"modified":"2026-09-22T16:46:10","modified_gmt":"2026-09-22T16:46:10","slug":"bingorentals","status":"publish","type":"plugin","link":"https:\/\/xho.wordpress.org\/plugins\/bingorentals\/","author":22028878,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.6.0","stable_tag":"1.6.0","tested":"7.1.2","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-09-22 16:46:10","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":320,"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-16 14:28:27","revision":3574631},"1.6.0":{"tag":"1.6.0","author":"bitsworld","date":"2026-09-22 16:46:10","revision":3707784}},"upgrade_notice":{"1.6.0":"<p>Optional AI Concierge chat (off by default). Documents BingoRentals API + Google Gemini data flow in External Services. Safe to update; enable AI only if you want the widget.<\/p>","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","1.6.0"],"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 <a href=\"https:\/\/bingorentals.com\">BingoRentals<\/a> 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<li>Optionally chat with an AI Concierge (when enabled) that can answer questions and help create bookings<\/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>Optional AI Concierge<\/strong> - Floating chat widget (off by default); proxied through WordPress to your BingoRentals API<\/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    [wpcr_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 Settings \u2192 BingoRentals. This is your own self-hosted or SaaS installation of BingoRentals.<\/p>\n\n<ul>\n<li>What it is used for: car search, fleet listing, locations, pricing, creating reservations, and (if enabled) AI Concierge chat.<\/li>\n<li>What data is sent: search parameters (dates, location IDs, category), reservation details (customer name, email, phone, dates, selected car\/extras), tenant slug, and \u2014 when AI Concierge is enabled \u2014 chat messages and language preference.<\/li>\n<li>When: whenever a visitor uses the booking form, fleet widget, or (if enabled) the AI chat. No Gemini API key is stored or sent by this WordPress plugin.<\/li>\n<li>Service URL: the API URL you configure (typically your BingoRentals site, e.g. https:\/\/bingorentals.com)<\/li>\n<li>Terms \/ privacy: you control this service \u2014 publish and link your own terms and privacy policy for your BingoRentals installation.<\/li>\n<\/ul>\n\n<h4>BingoRentals AI Concierge \/ Google Gemini (optional)<\/h4>\n\n<p>When <strong>AI Concierge widget<\/strong> is enabled in plugin Appearance settings (default: off) and the tenant also enables AI Concierge in the BingoRentals dashboard, chat requests are proxied from WordPress to your BingoRentals API (<code>ai-concierge\/status<\/code> and <code>ai-concierge\/chat<\/code>). Your BingoRentals server may then call Google Gemini to generate assistant replies and to run booking tools (quotes, pending reservations).<\/p>\n\n<ul>\n<li>What it is used for: optional customer support \/ booking assistance on pages that include <code>[wpcr_car_rental]<\/code>.<\/li>\n<li>What data is sent: chat message text and language; if the visitor provides booking details in chat, those may be sent to create a pending reservation. BingoRentals may forward conversational content to Google Gemini. Visitor IP may be used by BingoRentals for rate limiting.<\/li>\n<li>When: only after an administrator enables the widget in WordPress and AI Concierge is configured on the BingoRentals tenant; only when a visitor opens the chat and sends messages.<\/li>\n<li>Google Gemini API Terms of Service: https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<li>Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<li>Google Terms of Service: https:\/\/policies.google.com\/terms<\/li>\n<\/ul>\n\n<p>To disable this feature, go to <strong>Settings \u2192 BingoRentals \u2192 Appearance<\/strong> and set <strong>AI Concierge widget<\/strong> to <strong>No<\/strong>. You can also disable AI Concierge in the BingoRentals tenant dashboard.<\/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 the visitor's country via IP using ipapi.co. 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<dt id=\"what%20is%20the%20ai%20concierge%3F\"><h3>What is the AI Concierge?<\/h3><\/dt>\n<dd><p>An optional floating chat on pages that use <code>[wpcr_car_rental]<\/code>. It is off by default. Enable it under Settings \u2192 BingoRentals \u2192 Appearance, and also enable AI Concierge (with a Gemini API key) in your BingoRentals tenant dashboard. The WordPress plugin never stores a Gemini key; chat is proxied to your configured BingoRentals API, which may call Google Gemini. See External Services below.<\/p><\/dd>\n<dt id=\"does%20ai%20concierge%20send%20personal%20data%3F\"><h3>Does AI Concierge send personal data?<\/h3><\/dt>\n<dd><p>Only when a visitor chooses to use the chat. Message text is sent to your BingoRentals API. If the visitor asks to book and provides contact details, those fields may be included so a pending reservation can be created \u2014 the same kind of data as the normal booking form.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.0<\/h4>\n\n<ul>\n<li>Added: AI Concierge floating chat widget (optional, off by default). Proxies BingoRentals SaaS assistant via WordPress AJAX. Enable under Appearance settings; tenant must enable AI in the BingoRentals dashboard.<\/li>\n<li>Updated: External Services section documents AI Concierge data flow and Google Gemini terms\/privacy links.<\/li>\n<li>Updated: Shortcode docs and FAQ use <code>[wpcr_car_rental]<\/code> only; language FAQ references ipapi.co.<\/li>\n<\/ul>\n\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:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/321989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=321989"}],"author":[{"embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bitsworld"}],"wp:attachment":[{"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=321989"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=321989"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=321989"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=321989"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=321989"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/xho.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=321989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}