> For the complete documentation index, see [llms.txt](https://ovatheme.gitbook.io/brw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ovatheme.gitbook.io/brw/basics/shortcodes.md).

# Shortcodes

All shortcodes provided by the OVA-BRW plugin — embed booking forms, search widgets, product sections, and availability calendars anywhere on your site.

* 27 Total shortcodes
* 17 Single product
* 8 Search forms
* 2 Other

## Single Product Shortcodes

All shortcodes in this group accept `id` (WooCommerce product ID, required) and `class` (extra CSS class on the wrapper, optional). The product must be an OVA-BRW rental type.

<details>

<summary>[ovabrw_st_booking_form] Embeds the full booking form for a specific product</summary>

Renders the rental booking form (date pickers, quantity/vehicle, services, custom checkout fields, total) for the product specified by `id`. Also conditionally enqueues Google Maps (for location fields) and reCAPTCHA scripts when the product requires them. Use this to embed a booking widget outside the product page — e.g. on a landing page or homepage hero.

**Parameters**

| Parameter | Default | Description                             |
| --------- | ------- | --------------------------------------- |
| id        | ''      | WooCommerce product ID. **Required.**   |
| class     | ''      | Extra CSS class on the wrapper element. |

**Example**

```
[ovabrw_st_booking_form id="42" class="my-booking-widget"]
```

</details>

<details>

<summary>[ovabrw_st_request_booking_form] Embeds the "request booking" form for a specific product</summary>

Renders the Request Booking form variant for the specified product. The request form is a lighter alternative to the full booking form — customers submit an enquiry rather than a confirmed booking. Useful for products with manual approval workflows.

**Parameters**

| Parameter | Default | Description                             |
| --------- | ------- | --------------------------------------- |
| id        | ''      | WooCommerce product ID. **Required.**   |
| class     | ''      | Extra CSS class on the wrapper element. |

**Example**

```
[ovabrw_st_request_booking_form id="42"]
```

</details>

<details>

<summary>[ovabrw_st_product_calendar] Availability calendar for a specific product</summary>

Renders a visual availability calendar showing booked/available dates for the product. Uses the `shortcode/st-calendar.php` template. Embed this alongside the booking form so customers can see blocked dates before choosing their rental period.

**Parameters**

| Parameter | Default | Description                             |
| --------- | ------- | --------------------------------------- |
| id        | ''      | WooCommerce product ID. **Required.**   |
| class     | ''      | Extra CSS class on the wrapper element. |

**Example**

```
[ovabrw_st_product_calendar id="42"]
```

</details>

<details>

<summary>[ovabrw_st_table_price_product] Pricing table for a specific product</summary>

Renders the pricing/rate table configured for the product (e.g. daily rates, peak/off-peak pricing, duration tiers). Uses the `shortcode/st-table-price.php` template.

**Example**

```
[ovabrw_st_table_price_product id="42"]
```

</details>

<details>

<summary>[ovabrw_st_feature_product] Feature highlights block for a specific product (st-features template)</summary>

Renders the feature highlights section for the product using the `shortcode/st-features.php` template. This is distinct from `[ovabrw_product_features]` which uses a different template file (`shortcode/product-features.php`).

**Example**

```
[ovabrw_st_feature_product id="42"]
```

</details>

<details>

<summary>[ovabrw_product_images] Image gallery for a specific product</summary>

Renders the product's WooCommerce image gallery (featured image + gallery images) via `shortcode/product-images.php`. Use to embed the gallery independently from other product sections on a custom page layout.

**Example**

```
[ovabrw_product_images id="42"]
```

</details>

<details>

<summary>[ovabrw_product_title] Product title</summary>

Renders the title of the specified product via `shortcode/product-title.php`.

**Example**

```
[ovabrw_product_title id="42"]
```

</details>

<details>

<summary>[ovabrw_product_price] Price display for a specific product</summary>

Renders the formatted base price of the product via `shortcode/product-price.php`.

**Example**

```
[ovabrw_product_price id="42"]
```

</details>

<details>

<summary>[ovabrw_product_short_description] Short description for a specific product</summary>

Renders the WooCommerce short description of the product via `shortcode/product-short-description.php`.

**Example**

```
[ovabrw_product_short_description id="42"]
```

</details>

<details>

<summary>[ovabrw_product_features] Features list for a specific product</summary>

Renders the product's feature list via `shortcode/product-features.php`. Different template from `[ovabrw_st_feature_product]`.

**Example**

```
[ovabrw_product_features id="42"]
```

</details>

<details>

<summary>[ovabrw_product_specifications] Specifications section for a specific product</summary>

Renders all enabled specification fields and their values for the product via `shortcode/product-specifications.php`. Specifications are defined globally in BRW → Specifications.

**Example**

```
[ovabrw_product_specifications id="42"]
```

</details>

<details>

<summary>[ovabrw_product_tabs] Tabbed content for a specific product</summary>

Renders a tabbed interface for the product via `shortcode/product-tabs.php`. Tabs typically include Description, Reviews, and any custom tabs configured on the product.

**Example**

```
[ovabrw_product_tabs id="42"]
```

</details>

<details>

<summary>[ovabrw_product_review] Reviews and ratings for a specific product</summary>

Renders the WooCommerce reviews section (star rating + comments) for the product via `shortcode/product-review.php`.

**Example**

```
[ovabrw_product_review id="42"]
```

</details>

<details>

<summary>[ovabrw_product_taxonomy] Taxonomy terms (category, tags, custom) for a specific product</summary>

Renders the taxonomy labels (categories, tags, or custom taxonomies) associated with the product via `shortcode/product-taxonomy.php`.

**Example**

```
[ovabrw_product_taxonomy id="42"]
```

</details>

<details>

<summary>[ovabrw_product_meta] Meta information for a specific product</summary>

Renders product meta information (SKU, categories, tags) via `shortcode/product-meta.php`.

**Example**

```
[ovabrw_product_meta id="42"]
```

</details>

<details>

<summary>[ovabrw_product_related] Related products section</summary>

Renders a grid of related rental products for the specified product via `shortcode/product-related.php`.

**Example**

```
[ovabrw_product_related id="42"]
```

</details>

<details>

<summary>[ovabrw_product_unavailable] List of blocked/unavailable dates for a specific product</summary>

Renders the list of manually blocked / unavailable date ranges configured for the product via `shortcode/product-unavailable.php`. Useful to display alongside the calendar.

**Example**

```
[ovabrw_product_unavailable id="42"]
```

</details>

## Product Listing Grid / Archive

<details>

<summary>[ovabrw_products] Rental product listing grid — filter by category, card style, columns, ordering</summary>

Renders a paginated grid of rental products via `shortcode/list-products.php`. Supports filtering by category slug, multiple card styles, column layout, ordering, and custom post count. Use this to build a manual archive or a "Featured Products" section.

**Parameters**

| Parameter        | Default | Description                                                          |
| ---------------- | ------- | -------------------------------------------------------------------- |
| class            | ''      | Extra CSS class on the wrapper.                                      |
| posts\_per\_page | 6       | Number of products to display.                                       |
| order            | 'DESC'  | Sort direction: `ASC` or `DESC`.                                     |
| orderby          | 'date'  | Sort field: `date`, `title`, `price`, `rand`, etc.                   |
| categories       | ''      | Comma-separated category slugs to filter by. Empty = all categories. |
| card             | 'card1' | Card template: `card1`, `card2`, `card3`, … (theme-dependent).       |
| column           | 3       | Number of columns in the grid.                                       |

**Example**

```
[ovabrw_products posts_per_page="6" categories="cars,suv" card="card2" column="3" orderby="title" order="ASC"]
```

</details>

## Search Form Shortcodes

Search shortcodes come in **redirect** (submit → results page) and **AJAX** (results load inline, no page change) variants. The AJAX variants include additional result display parameters (`card_template`, `posts_per_page`, `columns`, `pagination`).

<details>

<summary>[ovabrw_search] General search form — all rental types, redirect to results page</summary>

The most flexible search form, suitable for Day/Hour/Mixed/Period/Transportation rental types. Fields are individually toggled via `show_*` parameters. Submitting redirects to `result_url` (or the configured archive page if blank). Empty attribute values fall back to the plugin's global settings.

**Key Parameters**

| Parameter                                | Default              | Description                                                |
| ---------------------------------------- | -------------------- | ---------------------------------------------------------- |
| class                                    | ''                   | Extra CSS class.                                           |
| template                                 | 'search\_form\_full' | Layout template name.                                      |
| column                                   | ''                   | Number of form columns.                                    |
| result\_url                              | ''                   | URL to redirect to on submit. Defaults to archive page.    |
| show\_name\_product                      | ''                   | Show product name field (`yes`/`no`).                      |
| show\_cat                                | ''                   | Show category dropdown.                                    |
| remove\_cats\_id                         | ''                   | Comma-separated category IDs to exclude from the dropdown. |
| show\_pickup\_loc / show\_dropoff\_loc   | ''                   | Show pickup / dropoff location dropdowns.                  |
| pickup\_loc / dropoff\_loc               | ''                   | Pre-selected location slug.                                |
| show\_pickup\_date / show\_dropoff\_date | ''                   | Show date pickers.                                         |
| pickup\_date / dropoff\_date             | ''                   | Pre-filled date value.                                     |
| show\_guest                              | ''                   | Show guest count field.                                    |
| min\_guests / max\_guests                | ''                   | Guest count limits.                                        |
| show\_quantity                           | ''                   | Show quantity field.                                       |
| show\_attribute                          | ''                   | Show WooCommerce attribute filter.                         |
| show\_tag\_product                       | ''                   | Show product tags filter.                                  |
| product\_tag                             | ''                   | Pre-selected product tag slug.                             |
| show\_tax                                | ''                   | Show custom taxonomy filter.                               |
| show\_price\_filter                      | ''                   | Show price range slider.                                   |
| min\_price / max\_price                  | ''                   | Price slider bounds.                                       |
| button\_text                             | ''                   | Search button label.                                       |
| orderby / order                          | 'title' / 'ASC'      | Default sort applied to results page.                      |

**Example**

```
[ovabrw_search show_pickup_date="yes" show_dropoff_date="yes" show_cat="yes" show_pickup_loc="yes" column="4" result_url="/rentals/"]
```

</details>

<details>

<summary>[ovabrw_search_ajax] General search form with inline AJAX results</summary>

Same field support as `[ovabrw_search]` but renders results inline without a page redirect. The form can be positioned at the `top`, `left`, or `right` of the results. Conditionally loads Google Maps if the `location` field type is included in `fields`.

**Key Parameters (beyond search)**

| Parameter            | Default                       | Description                                                                                                                                                                                                            |
| -------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| fields               | 'product-name\|category\|...' | Pipe-separated list of fields to show. Available: `product-name`, `category`, `pickup-location`, `dropoff-location`, `pickup-date`, `dropoff-date`, `guest`, `product-tags`, `quantity`, `price-filter`, `taxonomies`. |
| field\_columns       | 4                             | Number of form field columns.                                                                                                                                                                                          |
| position             | 'top'                         | Form position relative to results: `top`, `left`, `right`.                                                                                                                                                             |
| show\_time           | 'yes'                         | Show time pickers in date fields.                                                                                                                                                                                      |
| card\_template       | 'card1'                       | Card template for results.                                                                                                                                                                                             |
| posts\_per\_page     | 6                             | Results per page.                                                                                                                                                                                                      |
| columns              | 3                             | Result grid columns.                                                                                                                                                                                                   |
| show\_results\_found | 'yes'                         | Show "X results found" counter.                                                                                                                                                                                        |
| show\_sort\_by       | 'yes'                         | Show sort dropdown in results.                                                                                                                                                                                         |
| pagination           | 'yes'                         | Show pagination controls.                                                                                                                                                                                              |

**Example**

```
[ovabrw_search_ajax fields="category|pickup-date|dropoff-date|pickup-location" position="top" columns="3" posts_per_page="9"]
```

</details>

<details>

<summary>[ovabrw_search_hotel] Hotel/accommodation search form — positional fields, redirect</summary>

A search form optimized for Hotel/Tour rental types. Up to 9 fields are defined positionally via `field_1` through `field_9`. Each slot takes a field type name. Submitting redirects to `result_url`.

**Key Parameters**

| Parameter                                                 | Default                                                          | Description                                                                                                                                                   |
| --------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| field\_1 … field\_9                                       | category, pickup\_date, dropoff\_date, guest, '', '', '', '', '' | Positional field slots. Available values: `name`, `category`, `pickup_date`, `dropoff_date`, `guest`, `attribute`, `quantity`, `product_tag`, `price_filter`. |
| default\_cat                                              | ''                                                               | Pre-selected category slug.                                                                                                                                   |
| category\_in / category\_not\_in                          | ''                                                               | Comma-separated category IDs to include or exclude.                                                                                                           |
| is\_use\_guest\_woo                                       | ''                                                               | Use WooCommerce-style guest counter (`yes`/`no`).                                                                                                             |
| default\_adult\_number / min\_adults / max\_adults        | ''                                                               | Adult sub-counter controls.                                                                                                                                   |
| default\_children\_number / min\_children / max\_children | ''                                                               | Children sub-counter controls.                                                                                                                                |
| default\_babies\_number / min\_babies / max\_babies       | ''                                                               | Babies sub-counter controls.                                                                                                                                  |
| card / columns                                            | 'card1' / 'column4'                                              | Results card template and column class (used on results page).                                                                                                |
| result\_url                                               | ''                                                               | Redirect target on submit.                                                                                                                                    |

**Example**

```
[ovabrw_search_hotel field_1="name" field_2="category" field_3="pickup_date" field_4="dropoff_date" field_5="guest" result_url="/rooms/"]
```

</details>

<details>

<summary>[ovabrw_search_ajax_hotel] Hotel search with inline AJAX results and configurable form position</summary>

Same field system as `[ovabrw_search_hotel]` but renders results inline without a page redirect. Form position (`left`/`right`) and search form column count are additional parameters.

**Additional Parameters vs. search\_hotel**

| Parameter              | Default      | Description                                                         |
| ---------------------- | ------------ | ------------------------------------------------------------------- |
| form\_search\_position | 'left'       | Position of the search form relative to results: `left` or `right`. |
| search\_form\_columns  | 3            | Number of columns in the search form.                               |
| card                   | 'card1'      | Card template for results.                                          |
| posts\_per\_page       | 6            | Number of results per page.                                         |
| result\_column         | 'two-column' | Result grid layout class.                                           |
| pagination             | —            | Pagination display for results.                                     |

**Example**

```
[ovabrw_search_ajax_hotel field_1="category" field_2="pickup_date" field_3="dropoff_date" field_4="guest" form_search_position="left" posts_per_page="6"]
```

</details>

<details>

<summary>[ovabrw_search_taxi] Taxi/transfer search with Google Maps autocomplete, redirect</summary>

A search form for Taxi / Transportation rental types where pickup and dropoff locations use Google Maps (or OpenStreetMap) place autocomplete rather than a preset dropdown. Supports two layouts and pipe-separated configurable field order. Enqueues the Google Maps API script when a key is configured.

**Key Parameters**

| Parameter                       | Default                                                                            | Description                                                                                                                                                                       |
| ------------------------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| layout                          | 'layout1'                                                                          | Form layout: `layout1` or `layout2`.                                                                                                                                              |
| column                          | 2                                                                                  | Number of form columns.                                                                                                                                                           |
| fields                          | 'pickup-location\|dropoff-location\|pickup-date\|category\|number-seats\|quantity' | Pipe-separated field list. Available: `pickup-location`, `dropoff-location`, `pickup-date`, `category`, `number-seats`, `quantity`, `price-filter`, `product-tags`, `taxonomies`. |
| map\_type                       | 'geocode'                                                                          | Google Maps autocomplete type: `geocode`, `address`, `establishment`, `(regions)`, `(cities)`.                                                                                    |
| bounds / lat / lng / radius     | ''                                                                                 | Geographic bias / bounds for autocomplete suggestions.                                                                                                                            |
| restrictions                    | ''                                                                                 | Country restriction for autocomplete (e.g. `us`, `vn`).                                                                                                                           |
| default\_category               | ''                                                                                 | Pre-selected category slug.                                                                                                                                                       |
| incl\_category / excl\_category | ''                                                                                 | Comma-separated category IDs to include / exclude.                                                                                                                                |
| default\_seats                  | ''                                                                                 | Pre-filled number of seats value.                                                                                                                                                 |
| button\_icon                    | 'flaticon-search-1'                                                                | Icon class on the submit button.                                                                                                                                                  |
| button\_text                    | 'Search Taxi'                                                                      | Submit button label.                                                                                                                                                              |
| result\_url                     | ''                                                                                 | Redirect URL on submit.                                                                                                                                                           |

**Example**

```
[ovabrw_search_taxi fields="pickup-location|dropoff-location|pickup-date|category" map_type="geocode" restrictions="vn" result_url="/taxis/"]
```

</details>

<details>

<summary>[ovabrw_search_taxi_ajax] Taxi/transfer search with inline AJAX results</summary>

Same location autocomplete and field system as `[ovabrw_search_taxi]` but displays results inline via AJAX. Adds result display parameters and a `term` pre-filter.

**Additional Parameters vs. search\_taxi**

| Parameter        | Default        | Description                                       |
| ---------------- | -------------- | ------------------------------------------------- |
| columns          | 4              | Number of form columns.                           |
| card\_template   | 'card1'        | Card template for inline results.                 |
| posts\_per\_page | 6              | Results per page.                                 |
| column           | 'three-column' | Result grid layout class.                         |
| term             | ''             | Pre-filter results by category term slug on load. |
| pagination       | 'yes'          | Show pagination for results.                      |

**Example**

```
[ovabrw_search_taxi_ajax fields="pickup-location|dropoff-location|pickup-date|category" restrictions="vn" posts_per_page="6" column="three-column"]
```

</details>

<details>

<summary>[ovabrw_search_package] Package/tour search with configurable fields, redirect</summary>

Search form for fixed-package rentals (e.g. hourly tours, excursions with set durations). Fields are pipe-separated via `fields`. Package time slot definitions are passed as JSON via the `packages` parameter, delimited by `||`.

**Key Parameters**

| Parameter                                 | Default                                                              | Description                                                                                                                                                                                          |
| ----------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| fields                                    | 'pickup-location\|dropoff-location\|pickup-date\|packages\|quantity' | Pipe-separated field list. Available types: `name`, `category`, `pickup-location`, `dropoff-location`, `pickup-date`, `packages`, `guest`, `quantity`, `product-tags`, `price-filter`, `taxonomies`. |
| columns                                   | 2                                                                    | Number of form columns.                                                                                                                                                                              |
| packages                                  | ''                                                                   | Package slot definitions as JSON objects separated by `\|\|`.                                                                                                                                        |
| show\_time                                | ''                                                                   | Show time picker alongside date.                                                                                                                                                                     |
| default\_category / incl\_cat / excl\_cat | ''                                                                   | Category pre-selection and inclusion/exclusion.                                                                                                                                                      |
| result\_url                               | ''                                                                   | Redirect URL on submit.                                                                                                                                                                              |

**Example**

```
[ovabrw_search_package fields="category|pickup-date|packages|quantity" columns="4" result_url="/tours/"]
```

</details>

<details>

<summary>[ovabrw_search_package_ajax] Package/tour search with inline AJAX results</summary>

Same as `[ovabrw_search_package]` but renders results inline without a redirect. Adds result display parameters.

**Additional Parameters vs. search\_package**

| Parameter        | Default         | Description                       |
| ---------------- | --------------- | --------------------------------- |
| card\_template   | 'card1'         | Card template for inline results. |
| result\_column   | 3               | Number of result columns.         |
| posts\_per\_page | 6               | Results per page.                 |
| orderby / order  | 'title' / 'ASC' | Default sort for results.         |
| pagination       | 'yes'           | Show pagination for results.      |

**Example**

```
[ovabrw_search_package_ajax fields="category|pickup-date|packages|quantity" posts_per_page="6" result_column="3"]
```

</details>

## Appointment Popup

<details>

<summary>[ovabrw_appointment_popup_button] A button that opens the appointment booking popup for a product</summary>

Renders a button that, when clicked, opens a modal popup containing the full Appointment booking form for the specified product. Automatically enqueues the popup stylesheet and reCAPTCHA script. Use this to add an "Book Appointment" CTA anywhere on the site without requiring the customer to navigate to the product page.

**Parameters**

| Parameter    | Default               | Description                                                  |
| ------------ | --------------------- | ------------------------------------------------------------ |
| product\_id  | ''                    | WooCommerce product ID (Appointment type). **Required.**     |
| text\_button | 'Book Appointment'    | Button label text.                                           |
| icon\_button | 'far fa-calendar-alt' | Font Awesome (or other icon font) class for the button icon. |
| icon\_align  | 'before'              | Icon position: `before` or `after` the button text.          |

**Example**

```
[ovabrw_appointment_popup_button product_id="88" text_button="Book Now" icon_button="fas fa-calendar-check" icon_align="before"]
```

The product must use the **Rental by Appointment** type. Using this shortcode with other rental types will not render the correct form.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ovatheme.gitbook.io/brw/basics/shortcodes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
