CarRentory Free Setup
CarRentory Free is a complete standalone booking plugin. Follow the sections below in order to create your fleet, connect the required pages, accept offline bookings and test the customer journey.
Documentation
Start with the complete Free setup, then use the separate customization and Pro sections only when you need them.
CarRentory Free is a complete standalone booking plugin. Follow the sections below in order to create your fleet, connect the required pages, accept offline bookings and test the customer journey.
carrentory.After activation, you will see a new admin menu: CarRentory
Go to CarRentory → Settings. The settings are organized into these tabs.
Open CarRentory → Setup. Create the three customer-flow pages shown there and use the exact shortcodes below.
Place the compact search bar where customers start their rental search.
[carrentory_search_form variant="compact"]
Add both shortcodes in this order, in the same page content.
[carrentory_search_form layout="auto"]
[carrentory_vehicle_results]
This page receives the selected vehicle and rental details from the results page.
[carrentory_booking_form]
Go to CarRentory → Locations and create your pickup/drop-off locations.
Go to CarRentory → Vehicles and create your vehicles.
Go to CarRentory → Extras.
Create optional extras such as baby seat, GPS or additional driver.
Go to CarRentory → Settings → Tax / VAT.
Go to CarRentory → Settings → Payments.
Enable manual payment at pickup.
Add payment instructions and bank details.
CarRentory includes branded HTML email notifications for admin and customer booking communication.
CarRentory is translation-ready and includes English, German, Greek, Spanish, French, Italian and Dutch language files. Its display-translation system lets one fleet show customer-facing text in different languages without duplicating vehicles, locations, extras, prices or availability.
A single vehicle can keep its base title Economy Car while displaying Οικονομικό Αυτοκίνητο in Greek and Kompaktwagen in German. Quantity, availability and pricing still belong to the same vehicle.
When a translated field is empty, CarRentory shows the default title, description or setting. This lets you publish gradually without creating blank customer-facing content.
[carrentory_search_form variant="compact"]
[carrentory_search_form layout="auto"]
[carrentory_vehicle_results]
[carrentory_booking_form]
[carrentory_search_form] is registered, but the attributes above select the intended UI for each step of the customer flow.Every customer-facing template supplied by CarRentory Free can be copied to your theme or child theme and customized without editing plugin files.
Copy the plugin search form:
wp-content/plugins/carrentory/templates/search/form.php
to the same relative path inside your child theme:
wp-content/themes/your-child-theme/carrentory/search/form.php
CarRentory checks the child theme first and uses the bundled template only when no override exists.
data-carrentory-* attributes used by the frontend scripts. Escape all output with the appropriate WordPress function.CarRentory Free and Pro 1.0.0 expose 124 reviewed public extension points: 62 actions and 62 filters. The canonical allowlist classifies them as 66 visual, 34 admin, 17 integration and 7 logic extension points. Internal adapters, removed hooks and legacy licensing hooks are excluded.
add_filter( 'carrentory_pricing_adjustments', function ( $adjustments ) {
return $adjustments;
} );
Filters must return the first value with the expected type. Start by returning it unchanged, then make the smallest required adjustment.
add_action( 'carrentory_after_booking_calendar', function ( $context ) {
// Add admin-only presentation or controls here.
}, 10, 1 );
Register customizations in a small site plugin or a child theme. Use the documented argument order and accepted-argument count when your callback needs context.
Add or adjust customer-facing content without replacing complete templates.
carrentory_after_active_filtersActionFreeAdds project-specific content or integration handling immediately after the standard active filters step.
carrentory_after_active_filters$carrentory_argsadd_action( 'carrentory_after_active_filters', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_confirmationActionFreeAdds project-specific content or integration handling immediately after the standard booking confirmation step.
carrentory_after_booking_confirmation$carrentory_argsadd_action( 'carrentory_after_booking_confirmation', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_customer_detailsActionFreeAdds project-specific content or integration handling immediately after the standard booking customer details step.
carrentory_after_booking_customer_details$carrentory_argsadd_action( 'carrentory_after_booking_customer_details', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_extrasActionFreeAdds project-specific content or integration handling immediately after the standard booking extras step.
carrentory_after_booking_extras$carrentory_argsadd_action( 'carrentory_after_booking_extras', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_formActionFreeAdds project-specific content or integration handling immediately after the standard booking form step.
carrentory_after_booking_form$carrentory_argsadd_action( 'carrentory_after_booking_form', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_payment_methodsActionFreeAdds project-specific content or integration handling immediately after the standard booking payment methods step.
carrentory_after_booking_payment_methods$carrentory_argsadd_action( 'carrentory_after_booking_payment_methods', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_summaryActionFreeAdds project-specific content or integration handling immediately after the standard booking summary step.
carrentory_after_booking_summary$carrentory_argsadd_action( 'carrentory_after_booking_summary', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_booking_termsActionFreeAdds project-specific content or integration handling immediately after the standard booking terms step.
carrentory_after_booking_terms$carrentory_argsadd_action( 'carrentory_after_booking_terms', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_frontend_errorActionFreeAdds project-specific content or integration handling immediately after the standard frontend error step.
carrentory_after_frontend_error$carrentory_argsadd_action( 'carrentory_after_frontend_error', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_frontend_noticeActionFreeAdds project-specific content or integration handling immediately after the standard frontend notice step.
carrentory_after_frontend_notice$carrentory_argsadd_action( 'carrentory_after_frontend_notice', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_no_resultsActionFreeAdds project-specific content or integration handling immediately after the standard no results step.
carrentory_after_no_results$carrentory_argsadd_action( 'carrentory_after_no_results', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_pricing_breakdownActionFreeAdds project-specific content or integration handling immediately after the standard pricing breakdown step.
carrentory_after_pricing_breakdown$carrentory_argsadd_action( 'carrentory_after_pricing_breakdown', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_search_filtersActionFreeAdds project-specific content or integration handling immediately after the standard search filters step.
carrentory_after_search_filters$carrentory_argsadd_action( 'carrentory_after_search_filters', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_search_formActionFreeAdds project-specific content or integration handling immediately after the standard search form step.
carrentory_after_search_form$carrentory_argsadd_action( 'carrentory_after_search_form', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_search_resultsActionFreeAdds project-specific content or integration handling immediately after the standard search results step.
carrentory_after_search_results$carrentory_argsadd_action( 'carrentory_after_search_results', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_search_summaryActionFreeAdds project-specific content or integration handling immediately after the standard search summary step.
carrentory_after_search_summary$carrentory_argsadd_action( 'carrentory_after_search_summary', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_templateActionFreeAdds project-specific content or integration handling immediately after the standard template step.
carrentory_after_template$template_name, $located, $argsadd_action( 'carrentory_after_template', function ( $template_name, $located, $args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_after_vehicle_cardActionFreeAdds project-specific content or integration handling immediately after the standard vehicle card step.
carrentory_after_vehicle_card$view_dataadd_action( 'carrentory_after_vehicle_card', function ( $view_data ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_after_vehicle_listingActionFreeAdds project-specific content or integration handling immediately after the standard vehicle listing step.
carrentory_after_vehicle_listing$carrentory_argsadd_action( 'carrentory_after_vehicle_listing', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_active_filtersActionFreeAdds project-specific content or integration handling immediately before the standard active filters step.
carrentory_before_active_filters$carrentory_argsadd_action( 'carrentory_before_active_filters', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_confirmationActionFreeAdds project-specific content or integration handling immediately before the standard booking confirmation step.
carrentory_before_booking_confirmation$carrentory_argsadd_action( 'carrentory_before_booking_confirmation', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_customer_detailsActionFreeAdds project-specific content or integration handling immediately before the standard booking customer details step.
carrentory_before_booking_customer_details$carrentory_argsadd_action( 'carrentory_before_booking_customer_details', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_extrasActionFreeAdds project-specific content or integration handling immediately before the standard booking extras step.
carrentory_before_booking_extras$carrentory_argsadd_action( 'carrentory_before_booking_extras', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_formActionFreeAdds project-specific content or integration handling immediately before the standard booking form step.
carrentory_before_booking_form$carrentory_argsadd_action( 'carrentory_before_booking_form', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_payment_methodsActionFreeAdds project-specific content or integration handling immediately before the standard booking payment methods step.
carrentory_before_booking_payment_methods$carrentory_argsadd_action( 'carrentory_before_booking_payment_methods', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_summaryActionFreeAdds project-specific content or integration handling immediately before the standard booking summary step.
carrentory_before_booking_summary$carrentory_argsadd_action( 'carrentory_before_booking_summary', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_booking_termsActionFreeAdds project-specific content or integration handling immediately before the standard booking terms step.
carrentory_before_booking_terms$carrentory_argsadd_action( 'carrentory_before_booking_terms', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_frontend_errorActionFreeAdds project-specific content or integration handling immediately before the standard frontend error step.
carrentory_before_frontend_error$carrentory_argsadd_action( 'carrentory_before_frontend_error', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_frontend_noticeActionFreeAdds project-specific content or integration handling immediately before the standard frontend notice step.
carrentory_before_frontend_notice$carrentory_argsadd_action( 'carrentory_before_frontend_notice', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_no_resultsActionFreeAdds project-specific content or integration handling immediately before the standard no results step.
carrentory_before_no_results$carrentory_argsadd_action( 'carrentory_before_no_results', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_pricing_breakdownActionFreeAdds project-specific content or integration handling immediately before the standard pricing breakdown step.
carrentory_before_pricing_breakdown$carrentory_argsadd_action( 'carrentory_before_pricing_breakdown', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_search_filtersActionFreeAdds project-specific content or integration handling immediately before the standard search filters step.
carrentory_before_search_filters$carrentory_argsadd_action( 'carrentory_before_search_filters', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_search_formActionFreeAdds project-specific content or integration handling immediately before the standard search form step.
carrentory_before_search_form$carrentory_argsadd_action( 'carrentory_before_search_form', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_search_resultsActionFreeAdds project-specific content or integration handling immediately before the standard search results step.
carrentory_before_search_results$carrentory_argsadd_action( 'carrentory_before_search_results', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_search_summaryActionFreeAdds project-specific content or integration handling immediately before the standard search summary step.
carrentory_before_search_summary$carrentory_argsadd_action( 'carrentory_before_search_summary', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_templateActionFreeAdds project-specific content or integration handling immediately before the standard template step.
carrentory_before_template$template_name, $located, $argsadd_action( 'carrentory_before_template', function ( $template_name, $located, $args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_before_vehicle_cardActionFreeAdds project-specific content or integration handling immediately before the standard vehicle card step.
carrentory_before_vehicle_card$view_dataadd_action( 'carrentory_before_vehicle_card', function ( $view_data ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_before_vehicle_listingActionFreeAdds project-specific content or integration handling immediately before the standard vehicle listing step.
carrentory_before_vehicle_listing$carrentory_argsadd_action( 'carrentory_before_vehicle_listing', function ( $carrentory_args ) {
echo '<span class="my-site-carrentory-note">' . esc_html__( 'Additional rental information', 'my-site' ) . '</span>';
}, 10, 1 );
carrentory_booking_confirmation_dataFilterFreeAdjusts the customer-facing booking confirmation data data before the approved template renders it.
carrentory_booking_confirmation_data$view_data, $booking_id$view_data with the same documented data type.add_filter( 'carrentory_booking_confirmation_data', function ( $view_data, $booking_id ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 2 );
carrentory_booking_customer_details_dataFilterFreeAdjusts the customer-facing booking customer details data data before the approved template renders it.
carrentory_booking_customer_details_data$view_data, $submitted_customer$view_data with the same documented data type.add_filter( 'carrentory_booking_customer_details_data', function ( $view_data, $submitted_customer ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 2 );
carrentory_booking_extras_dataFilterFreeAdjusts the customer-facing booking extras data data before the approved template renders it.
carrentory_booking_extras_data$view_data, $active_extras, $selected_extras$view_data with the same documented data type.add_filter( 'carrentory_booking_extras_data', function ( $view_data, $active_extras, $selected_extras ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_booking_form_dataFilterFreeAdjusts the customer-facing booking form data data before the approved template renders it.
carrentory_booking_form_data$booking_form_data, $values, $pricing, $submission_result$booking_form_data with the same documented data type.add_filter( 'carrentory_booking_form_data', function ( $booking_form_data, $values, $pricing, $submission_result ) {
// Adjust only documented or project-owned values.
return $booking_form_data;
}, 10, 4 );
carrentory_booking_payment_displayFilterFreeAdjusts the customer-facing booking payment display data before the approved template renders it.
carrentory_booking_payment_display$display, $booking_id, $method, $payment_methods, $admin$display with the same documented data type.add_filter( 'carrentory_booking_payment_display', function ( $display, $booking_id, $method, $payment_methods, $admin ) {
// Adjust only documented or project-owned values.
return $display;
}, 10, 5 );
carrentory_booking_payment_methods_dataFilterFreeAdjusts the customer-facing booking payment methods data data before the approved template renders it.
carrentory_booking_payment_methods_data$view_data, $payment_methods, $selected_method$view_data with the same documented data type.add_filter( 'carrentory_booking_payment_methods_data', function ( $view_data, $payment_methods, $selected_method ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_booking_summary_dataFilterFreeAdjusts the customer-facing booking summary data data before the approved template renders it.
carrentory_booking_summary_data$view_data, $values, $pricing$view_data with the same documented data type.add_filter( 'carrentory_booking_summary_data', function ( $view_data, $values, $pricing ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_booking_terms_dataFilterFreeAdjusts the customer-facing booking terms data data before the approved template renders it.
carrentory_booking_terms_data$view_data, $terms_accepted, $terms_page_url$view_data with the same documented data type.add_filter( 'carrentory_booking_terms_data', function ( $view_data, $terms_accepted, $terms_page_url ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_default_template_pathFilterFreeAdjusts the customer-facing default template path data before the approved template renders it.
carrentory_default_template_path$default_path$default_path with the same documented data type.add_filter( 'carrentory_default_template_path', function ( $default_path ) {
// Adjust only documented or project-owned values.
return $default_path;
}, 10, 1 );
carrentory_frontend_error_dataFilterFreeAdjusts the customer-facing frontend error data data before the approved template renders it.
carrentory_frontend_error_data$view_data, $errors$view_data with the same documented data type.add_filter( 'carrentory_frontend_error_data', function ( $view_data, $errors ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 2 );
carrentory_frontend_notice_dataFilterFreeAdjusts the customer-facing frontend notice data data before the approved template renders it.
carrentory_frontend_notice_data$view_data, $message, $type$view_data with the same documented data type.add_filter( 'carrentory_frontend_notice_data', function ( $view_data, $message, $type ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_frontend_view_dataFilterFreeAdjusts the customer-facing frontend view data data before the approved template renders it.
carrentory_frontend_view_data$view_data, $template_name, $view$view_data with the same documented data type.add_filter( 'carrentory_frontend_view_data', function ( $view_data, $template_name, $view ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_get_template_argsFilterFreeAdjusts the customer-facing get template args data before the approved template renders it.
carrentory_get_template_args$args, $template_name, $located$args with the same documented data type.add_filter( 'carrentory_get_template_args', function ( $args, $template_name, $located ) {
// Adjust only documented or project-owned values.
return $args;
}, 10, 3 );
carrentory_locate_templateFilterFreeAdjusts the customer-facing locate template data before the approved template renders it.
carrentory_locate_template$located, $template_name, $template_path, $default_path$located with the same documented data type.add_filter( 'carrentory_locate_template', function ( $located, $template_name, $template_path, $default_path ) {
// Adjust only documented or project-owned values.
return $located;
}, 10, 4 );
carrentory_payment_method_dataFilterFreeAdjusts the customer-facing payment method data data before the approved template renders it.
carrentory_payment_method_data$method, $key, $gateway, $context, $component$method with the same documented data type.add_filter( 'carrentory_payment_method_data', function ( $method, $key, $gateway, $context, $component ) {
// Adjust only documented or project-owned values.
return $method;
}, 10, 5 );
carrentory_payment_methodsFilterFreeAdjusts the customer-facing payment methods data before the approved template renders it.
carrentory_payment_methods$methods, $context, $component$methods with the same documented data type.add_filter( 'carrentory_payment_methods', function ( $methods, $context, $component ) {
// Adjust only documented or project-owned values.
return $methods;
}, 10, 3 );
carrentory_pricing_breakdown_dataFilterFreeAdjusts the customer-facing pricing breakdown data data before the approved template renders it.
carrentory_pricing_breakdown_data$view_data, $breakdown, $pricing$view_data with the same documented data type.add_filter( 'carrentory_pricing_breakdown_data', function ( $view_data, $breakdown, $pricing ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_search_active_filters_dataFilterFreeAdjusts the customer-facing search active filters data data before the approved template renders it.
carrentory_search_active_filters_data$view_data, $values$view_data with the same documented data type.add_filter( 'carrentory_search_active_filters_data', function ( $view_data, $values ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 2 );
carrentory_search_filters_dataFilterFreeAdjusts the customer-facing search filters data data before the approved template renders it.
carrentory_search_filters_data$view_data, $values, $preserve_search_values$view_data with the same documented data type.add_filter( 'carrentory_search_filters_data', function ( $view_data, $values, $preserve_search_values ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_search_form_dataFilterFreeAdjusts the customer-facing search form data data before the approved template renders it.
carrentory_search_form_data$view_data, $atts$view_data with the same documented data type.add_filter( 'carrentory_search_form_data', function ( $view_data, $atts ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 2 );
carrentory_search_no_results_dataFilterFreeAdjusts the customer-facing search no results data data before the approved template renders it.
carrentory_search_no_results_data$view_data, $values, $is_search_mode$view_data with the same documented data type.add_filter( 'carrentory_search_no_results_data', function ( $view_data, $values, $is_search_mode ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 3 );
carrentory_search_results_dataFilterFreeAdjusts the customer-facing search results data data before the approved template renders it.
carrentory_search_results_data$results_data, $results, $values$results_data with the same documented data type.add_filter( 'carrentory_search_results_data', function ( $results_data, $results, $values ) {
// Adjust only documented or project-owned values.
return $results_data;
}, 10, 3 );
carrentory_search_summary_dataFilterFreeAdjusts the customer-facing search summary data data before the approved template renders it.
carrentory_search_summary_data$view_data, $values, $pickup_datetime, $dropoff_datetime$view_data with the same documented data type.add_filter( 'carrentory_search_summary_data', function ( $view_data, $values, $pickup_datetime, $dropoff_datetime ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 4 );
carrentory_template_partFilterFreeAdjusts the customer-facing template part data before the approved template renders it.
carrentory_template_part$templates, $slug, $name, $args$templates with the same documented data type.add_filter( 'carrentory_template_part', function ( $templates, $slug, $name, $args ) {
// Adjust only documented or project-owned values.
return $templates;
}, 10, 4 );
carrentory_template_pathFilterFreeAdjusts the customer-facing template path data before the approved template renders it.
carrentory_template_path$template_path$template_path with the same documented data type.add_filter( 'carrentory_template_path', function ( $template_path ) {
// Adjust only documented or project-owned values.
return $template_path;
}, 10, 1 );
carrentory_vehicle_card_dataFilterFreeAdjusts the customer-facing vehicle card data data before the approved template renders it.
carrentory_vehicle_card_data$view_data, $result$view_data with the same documented data type.add_filter( 'carrentory_vehicle_card_data', function ( $view_data, $result ) {
// Adjust only documented or project-owned values.
return $view_data;
}, 10, 2 );
carrentory_vehicle_list_dataFilterFreeAdjusts the customer-facing vehicle list data data before the approved template renders it.
carrentory_vehicle_list_data$vehicle_list_data, $results_data, $results, $values$vehicle_list_data with the same documented data type.add_filter( 'carrentory_vehicle_list_data', function ( $vehicle_list_data, $results_data, $results, $values ) {
// Adjust only documented or project-owned values.
return $vehicle_list_data;
}, 10, 4 );
carrentory_vehicle_results_dataFilterFreeAdjusts the customer-facing vehicle results data data before the approved template renders it.
carrentory_vehicle_results_data$results_data, $results, $values$results_data with the same documented data type.add_filter( 'carrentory_vehicle_results_data', function ( $results_data, $results, $values ) {
// Adjust only documented or project-owned values.
return $results_data;
}, 10, 3 );
Extend genuine WordPress administration surfaces while preserving CarRentory capability and callback contracts.
carrentory_admin_booking_email_payment_rowsFilterFreeExtends the admin booking email payment rows administration data while preserving built-in permission and callback rules.
carrentory_admin_booking_email_payment_rows$payment_rows, $booking_id, $payment_display, $admin$payment_rows with the same documented data type.add_filter( 'carrentory_admin_booking_email_payment_rows', function ( $payment_rows, $booking_id, $payment_display, $admin ) {
// Adjust only documented or project-owned values.
return $payment_rows;
}, 10, 4 );
carrentory_admin_booking_payment_detail_rowsFilterFreeExtends the admin booking payment detail rows administration data while preserving built-in permission and callback rules.
carrentory_admin_booking_payment_detail_rows$rows, $post_id, $method, $meta, $admin$rows with the same documented data type.add_filter( 'carrentory_admin_booking_payment_detail_rows', function ( $rows, $post_id, $method, $meta, $admin ) {
// Adjust only documented or project-owned values.
return $rows;
}, 10, 5 );
carrentory_admin_booking_payment_email_displayFilterFreeExtends the admin booking payment email display administration data while preserving built-in permission and callback rules.
carrentory_admin_booking_payment_email_display$display, $post_id, $method, $settings, $admin$display with the same documented data type.add_filter( 'carrentory_admin_booking_payment_email_display', function ( $display, $post_id, $method, $settings, $admin ) {
// Adjust only documented or project-owned values.
return $display;
}, 10, 5 );
carrentory_admin_booking_payment_method_filter_optionsFilterFreeExtends the admin booking payment method filter options administration data while preserving built-in permission and callback rules.
carrentory_admin_booking_payment_method_filter_options$options, $admin$options with the same documented data type.add_filter( 'carrentory_admin_booking_payment_method_filter_options', function ( $options, $admin ) {
// Adjust only documented or project-owned values.
return $options;
}, 10, 2 );
carrentory_admin_booking_payment_method_instructionsFilterFreeExtends the admin booking payment method instructions administration data while preserving built-in permission and callback rules.
carrentory_admin_booking_payment_method_instructions$instructions, $method, $settings, $post_id, $admin$instructions with the same documented data type.add_filter( 'carrentory_admin_booking_payment_method_instructions', function ( $instructions, $method, $settings, $post_id, $admin ) {
// Adjust only documented or project-owned values.
return $instructions;
}, 10, 5 );
carrentory_admin_booking_payment_method_labelFilterFreeExtends the admin booking payment method label administration data while preserving built-in permission and callback rules.
carrentory_admin_booking_payment_method_label$label, $method, $post_id, $admin$label with the same documented data type.add_filter( 'carrentory_admin_booking_payment_method_label', function ( $label, $method, $post_id, $admin ) {
// Adjust only documented or project-owned values.
return $label;
}, 10, 4 );
carrentory_admin_dashboard_after_summaryActionFreeAdds an admin-only control or status at the admin dashboard after summary extension point.
carrentory_admin_dashboard_after_summary$dashboard_context, $adminadd_action( 'carrentory_admin_dashboard_after_summary', function ( $dashboard_context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_admin_dashboard_sectionsFilterFreeExtends the admin dashboard sections administration data while preserving built-in permission and callback rules.
carrentory_admin_dashboard_sections$sections, $dashboard_context, $admin$sections with the same documented data type.add_filter( 'carrentory_admin_dashboard_sections', function ( $sections, $dashboard_context, $admin ) {
// Adjust only documented or project-owned values.
return $sections;
}, 10, 3 );
carrentory_admin_menu_itemsFilterFreeAdds or reorders CarRentory admin submenu definitions. It cannot lower the capability or replace the callback of a built-in admin page.
carrentory_admin_menu_items$items, $admin$items with the same documented data type.add_filter( 'carrentory_admin_menu_items', function ( $items, $admin ) {
$items[] = array(
'key' => 'my_site_tools',
'page_title' => __( 'Rental Tools', 'my-site' ),
'menu_title' => __( 'Rental Tools', 'my-site' ),
'capability' => 'manage_options',
'menu_slug' => 'my-site-rental-tools',
'callback' => 'my_site_render_rental_tools',
'parent' => 'carrentory',
'register' => true,
);
return $items;
}, 10, 2 );
carrentory_after_admin_dashboardActionFreeAdds project-specific content or integration handling immediately after the standard admin dashboard step.
carrentory_after_admin_dashboard$dashboard_context, $adminadd_action( 'carrentory_after_admin_dashboard', function ( $dashboard_context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_after_booking_calendarActionFreeAdds project-specific content or integration handling immediately after the standard booking calendar step.
carrentory_after_booking_calendar$calendar_context, $adminadd_action( 'carrentory_after_booking_calendar', function ( $calendar_context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_after_settings_fieldActionFreeAdds project-specific content or integration handling immediately after the standard settings field step.
carrentory_after_settings_field$field, $settings, $settings_componentadd_action( 'carrentory_after_settings_field', function ( $field, $settings, $settings_component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_after_settings_sectionActionFreeAdds project-specific content or integration handling immediately after the standard settings section step.
carrentory_after_settings_section$tab_key, $section_key, $args, $settings, $settings_componentadd_action( 'carrentory_after_settings_section', function ( $tab_key, $section_key, $args, $settings, $settings_component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 5 );
carrentory_after_settings_tabActionFreeAdds project-specific content or integration handling immediately after the standard settings tab step.
carrentory_after_settings_tab$active_tab, $settings, $settings_componentadd_action( 'carrentory_after_settings_tab', function ( $active_tab, $settings, $settings_component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_availability_page_actionsActionFreeAdds an admin-only control or status at the availability page actions extension point.
carrentory_availability_page_actions$availability_context, $componentadd_action( 'carrentory_availability_page_actions', function ( $availability_context, $component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_before_admin_dashboardActionFreeAdds project-specific content or integration handling immediately before the standard admin dashboard step.
carrentory_before_admin_dashboard$dashboard_context, $adminadd_action( 'carrentory_before_admin_dashboard', function ( $dashboard_context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_before_booking_calendarActionFreeAdds project-specific content or integration handling immediately before the standard booking calendar step.
carrentory_before_booking_calendar$calendar_context, $adminadd_action( 'carrentory_before_booking_calendar', function ( $calendar_context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_before_settings_fieldActionFreeAdds project-specific content or integration handling immediately before the standard settings field step.
carrentory_before_settings_field$field, $settings, $settings_componentadd_action( 'carrentory_before_settings_field', function ( $field, $settings, $settings_component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_before_settings_sectionActionFreeAdds project-specific content or integration handling immediately before the standard settings section step.
carrentory_before_settings_section$tab_key, $section_key, $args, $settings, $settings_componentadd_action( 'carrentory_before_settings_section', function ( $tab_key, $section_key, $args, $settings, $settings_component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 5 );
carrentory_before_settings_tabActionFreeAdds project-specific content or integration handling immediately before the standard settings tab step.
carrentory_before_settings_tab$active_tab, $settings, $settings_componentadd_action( 'carrentory_before_settings_tab', function ( $active_tab, $settings, $settings_component ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_booking_calendar_actionsActionFreeAdds an admin-only control or status at the booking calendar actions extension point.
carrentory_booking_calendar_actions$calendar_context, $adminadd_action( 'carrentory_booking_calendar_actions', function ( $calendar_context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_booking_calendar_row_actionsActionFreeAdds an admin-only control or status at the booking calendar row actions extension point.
carrentory_booking_calendar_row_actions$action_context, $booking, $adminadd_action( 'carrentory_booking_calendar_row_actions', function ( $action_context, $booking, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_booking_edit_actionsActionFreeAdds an admin-only control or status at the booking edit actions extension point.
carrentory_booking_edit_actions$context, $booking, $adminadd_action( 'carrentory_booking_edit_actions', function ( $context, $booking, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_booking_list_export_actionsActionFreeAdds an admin-only control or status at the booking list export actions extension point.
carrentory_booking_list_export_actions$filters, $adminadd_action( 'carrentory_booking_list_export_actions', function ( $filters, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_booking_list_filter_actionsActionFreeAdds an admin-only control or status at the booking list filter actions extension point.
carrentory_booking_list_filter_actions$filters, $adminadd_action( 'carrentory_booking_list_filter_actions', function ( $filters, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 2 );
carrentory_booking_row_actionsFilterFreeExtends the booking row actions administration data while preserving built-in permission and callback rules.
carrentory_booking_row_actions$actions, $context, $post, $admin$actions with the same documented data type.add_filter( 'carrentory_booking_row_actions', function ( $actions, $context, $post, $admin ) {
// Adjust only documented or project-owned values.
return $actions;
}, 10, 4 );
carrentory_reports_menu_itemsFilterFreeAdds custom report submenu definitions. Every report remains protected by manage_options; this filter is not a way to bypass that capability.
carrentory_reports_menu_items$items, $admin$items with the same documented data type.add_filter( 'carrentory_reports_menu_items', function ( $items, $admin ) {
$items[] = array(
'key' => 'my_site_report',
'page_title' => __( 'My Site Report', 'my-site' ),
'menu_title' => __( 'My Site Report', 'my-site' ),
'capability' => 'manage_options',
'menu_slug' => 'my-site-report',
'callback' => 'my_site_render_report',
'register' => true,
);
return $items;
}, 10, 2 );
carrentory_reports_page_actionsActionProAdds an admin-only control or status at the reports page actions extension point.
carrentory_reports_page_actions$report_key, $context, $adminadd_action( 'carrentory_reports_page_actions', function ( $report_key, $context, $admin ) {
echo '<span class="description">' . esc_html__( 'Custom admin information', 'my-site' ) . '</span>';
}, 10, 3 );
carrentory_settings_defaultsFilterFreeExtends the settings defaults administration data while preserving built-in permission and callback rules.
carrentory_settings_defaults$defaults, $settings_component$defaults with the same documented data type.add_filter( 'carrentory_settings_defaults', function ( $defaults, $settings_component ) {
// Adjust only documented or project-owned values.
return $defaults;
}, 10, 2 );
carrentory_settings_field_renderersFilterFreeExtends the settings field renderers administration data while preserving built-in permission and callback rules.
carrentory_settings_field_renderers$renderers, $settings_component$renderers with the same documented data type.add_filter( 'carrentory_settings_field_renderers', function ( $renderers, $settings_component ) {
// Adjust only documented or project-owned values.
return $renderers;
}, 10, 2 );
carrentory_settings_field_valueFilterFreeExtends the settings field value administration data while preserving built-in permission and callback rules.
carrentory_settings_field_value$value, $field, $settings, $settings_component$value with the same documented data type.add_filter( 'carrentory_settings_field_value', function ( $value, $field, $settings, $settings_component ) {
// Adjust only documented or project-owned values.
return $value;
}, 10, 4 );
carrentory_settings_fieldsFilterFreeExtends the settings fields administration data while preserving built-in permission and callback rules.
carrentory_settings_fields$fields, $settings_component$fields with the same documented data type.add_filter( 'carrentory_settings_fields', function ( $fields, $settings_component ) {
// Adjust only documented or project-owned values.
return $fields;
}, 10, 2 );
carrentory_settings_sectionsFilterFreeExtends the settings sections administration data while preserving built-in permission and callback rules.
carrentory_settings_sections$sections, $settings_component$sections with the same documented data type.add_filter( 'carrentory_settings_sections', function ( $sections, $settings_component ) {
// Adjust only documented or project-owned values.
return $sections;
}, 10, 2 );
carrentory_settings_tabsFilterFreeExtends the settings tabs administration data while preserving built-in permission and callback rules.
carrentory_settings_tabs$tabs, $settings_component$tabs with the same documented data type.add_filter( 'carrentory_settings_tabs', function ( $tabs, $settings_component ) {
// Adjust only documented or project-owned values.
return $tabs;
}, 10, 2 );
Make bounded behavior changes. These filters cannot unlock entitlements, weaken payment validation or remove protected settings.
carrentory_allow_inclusive_vatFilterFreeDisables inclusive VAT when the feature is already entitled. It cannot enable inclusive VAT in Free or bypass Pro availability.
carrentory_allow_inclusive_vat$allowed, $pricing_engine$allowed as a boolean; callbacks may only preserve or disable entitled inclusive VAT.add_filter( 'carrentory_allow_inclusive_vat', function ( $allowed, $pricing_engine ) {
return $allowed && (bool) get_option( 'my_site_allow_inclusive_vat', false );
}, 10, 2 );
carrentory_feature_availableFilterFreeDisables an already available feature for a project-specific condition. It cannot unlock a Pro feature or override entitlement checks.
carrentory_feature_available$available, $key, $definition, $context, $feature_manager$available as a boolean; callbacks may only keep or disable existing availability.add_filter( 'carrentory_feature_available', function ( $available, $key, $definition, $context, $feature_manager ) {
if ( 'custom_reporting' === $key && ! current_user_can( 'manage_options' ) ) {
return false;
}
return $available;
}, 10, 5 );
carrentory_payment_gateway_availableFilterFreeDisables an already available payment gateway for a project-specific condition. It cannot activate a gateway that is unavailable in the current edition or setup.
carrentory_payment_gateway_available$available, $gateway, $context, $registry$available as a boolean; callbacks may only keep or disable existing availability.add_filter( 'carrentory_payment_gateway_available', function ( $available, $gateway, $context, $registry ) {
if ( 'stripe' === $gateway->get_key() && 'production' !== wp_get_environment_type() ) {
return false;
}
return $available;
}, 10, 4 );
carrentory_payment_gateway_failure_blocks_successFilterFreeMakes payment failure handling stricter by requiring a failed gateway result to block booking success. It cannot ignore or suppress an online-payment failure.
carrentory_payment_gateway_failure_blocks_success$blocks, $gateway, $result$blocks as a boolean; callbacks may only preserve or strengthen failure blocking.add_filter( 'carrentory_payment_gateway_failure_blocks_success', function ( $blocks, $gateway, $result ) {
return true;
}, 10, 3 );
carrentory_pricing_adjustmentsFilterFreeAdds validated, non-negative pre-tax pricing adjustments with a unique key, label and amount.
carrentory_pricing_adjustments$adjustments, $context, $pricing_engine$adjustments with the same documented data type.add_filter( 'carrentory_pricing_adjustments', function ( $adjustments, $context, $pricing_engine ) {
$adjustments[] = array(
'key' => 'service_fee',
'label' => __( 'Service fee', 'my-site' ),
'amount' => 12.50,
);
return $adjustments;
}, 10, 3 );
carrentory_pricing_daily_rate_dataFilterFreeAdjusts the daily rate amount, label and source for a specific vehicle, charge date and pricing context.
carrentory_pricing_daily_rate_data$rate_data, $vehicle_id, $date, $context, $pricing_engine$rate_data with the same documented data type.add_filter( 'carrentory_pricing_daily_rate_data', function ( $rate_data, $vehicle_id, $date, $context, $pricing_engine ) {
if ( (int) get_option( 'my_site_featured_vehicle_id' ) === $vehicle_id ) {
$rate_data['label'] = __( 'Preferred vehicle rate', 'my-site' );
}
return $rate_data;
}, 10, 5 );
carrentory_sanitize_settingsFilterFreeSanitizes values owned by a custom settings extension after core settings have been processed. It must preserve protected values and return the complete settings array.
carrentory_sanitize_settings$sanitized, $submitted, $existing, $settings_sanitizer$sanitized with the same documented data type.add_filter( 'carrentory_sanitize_settings', function ( $sanitized, $submitted, $existing, $settings_sanitizer ) {
if ( isset( $submitted['my_site_reference'] ) ) {
$sanitized['my_site_reference'] = sanitize_text_field( $submitted['my_site_reference'] );
}
return $sanitized;
}, 10, 4 );
Connect supported external or project-specific code through reviewed data and lifecycle contracts.
carrentory_after_csv_exportActionProAdds project-specific content or integration handling immediately after the standard csv export step.
carrentory_after_csv_export$context, $componentadd_action( 'carrentory_after_csv_export', function ( $context, $component ) {
do_action( 'my_site_carrentory_event', $context );
}, 10, 2 );
carrentory_after_payment_webhookActionFreeAdds project-specific content or integration handling immediately after the standard payment webhook step.
carrentory_after_payment_webhook$handler_key, $handleradd_action( 'carrentory_after_payment_webhook', function ( $handler_key, $handler ) {
do_action( 'my_site_carrentory_event', $handler_key );
}, 10, 2 );
carrentory_before_csv_exportActionProAdds project-specific content or integration handling immediately before the standard csv export step.
carrentory_before_csv_export$context, $componentadd_action( 'carrentory_before_csv_export', function ( $context, $component ) {
do_action( 'my_site_carrentory_event', $context );
}, 10, 2 );
carrentory_before_payment_webhookActionFreeAdds project-specific content or integration handling immediately before the standard payment webhook step.
carrentory_before_payment_webhook$handler_key, $handleradd_action( 'carrentory_before_payment_webhook', function ( $handler_key, $handler ) {
do_action( 'my_site_carrentory_event', $handler_key );
}, 10, 2 );
carrentory_booking_email_payment_rowsFilterFreeExtends the reviewed booking email payment rows integration data while preserving validation and protected boundaries.
carrentory_booking_email_payment_rows$rows, $booking_id, $method, $payment_display, $include_instructions, $admin$rows with the same documented data type.add_filter( 'carrentory_booking_email_payment_rows', function ( $rows, $booking_id, $method, $payment_display, $include_instructions, $admin ) {
// Adjust only documented or project-owned values.
return $rows;
}, 10, 6 );
carrentory_booking_pricing_snapshot_metaFilterFreeExtends the reviewed booking pricing snapshot meta integration data while preserving validation and protected boundaries.
carrentory_booking_pricing_snapshot_meta$meta, $pricing, $booking_id, $context$meta with the same documented data type.add_filter( 'carrentory_booking_pricing_snapshot_meta', function ( $meta, $pricing, $booking_id, $context ) {
// Adjust only documented or project-owned values.
return $meta;
}, 10, 4 );
carrentory_csv_escape_valueFilterFreeExtends the reviewed csv escape value integration data while preserving validation and protected boundaries.
carrentory_csv_escape_value$value, $context$value with the same documented data type.add_filter( 'carrentory_csv_escape_value', function ( $value, $context ) {
// Adjust only documented or project-owned values.
return $value;
}, 10, 2 );
carrentory_csv_rowFilterFreeExtends the reviewed csv row integration data while preserving validation and protected boundaries.
carrentory_csv_row$row, $context$row with the same documented data type.add_filter( 'carrentory_csv_row', function ( $row, $context ) {
// Adjust only documented or project-owned values.
return $row;
}, 10, 2 );
carrentory_feature_definitionsFilterFreeAdds custom feature definitions before registration. It cannot replace ownership, package or availability metadata for built-in Free or Pro features.
carrentory_feature_definitions$definitions$definitions with the same documented data type.add_filter( 'carrentory_feature_definitions', function ( $definitions ) {
$definitions['my_site_reporting'] = array(
'label' => 'My Site Reporting',
'description' => 'Project-specific reporting metadata.',
'group' => 'reports',
'owner' => 'custom',
'package' => 'my-site',
'default_available' => true,
'implemented' => true,
);
return $definitions;
}, 10, 1 );
carrentory_i18n_editable_localesFilterFreeExtends the reviewed i18n editable locales integration data while preserving validation and protected boundaries.
carrentory_i18n_editable_locales$locales$locales with the same documented data type.add_filter( 'carrentory_i18n_editable_locales', function ( $locales ) {
// Adjust only documented or project-owned values.
return $locales;
}, 10, 1 );
carrentory_multilingual_setting_field_typesFilterFreeExtends the reviewed multilingual setting field types integration data while preserving validation and protected boundaries.
carrentory_multilingual_setting_field_types$field_types, $component$field_types with the same documented data type.add_filter( 'carrentory_multilingual_setting_field_types', function ( $field_types, $component ) {
// Adjust only documented or project-owned values.
return $field_types;
}, 10, 2 );
carrentory_payment_gatewaysFilterFreeExtends the reviewed payment gateways integration data while preserving validation and protected boundaries.
carrentory_payment_gateways$gateways, $payment_component$gateways with the same documented data type.add_filter( 'carrentory_payment_gateways', function ( $gateways, $payment_component ) {
// Adjust only documented or project-owned values.
return $gateways;
}, 10, 2 );
carrentory_payment_webhook_handlersFilterFreeExtends the reviewed payment webhook handlers integration data while preserving validation and protected boundaries.
carrentory_payment_webhook_handlers$handlers, $payment_component$handlers with the same documented data type.add_filter( 'carrentory_payment_webhook_handlers', function ( $handlers, $payment_component ) {
// Adjust only documented or project-owned values.
return $handlers;
}, 10, 2 );
carrentory_pro_loadedActionProFires after the public CarRentory Pro plugin object finishes loading so compatible integrations can attach to supported public contracts. It does not activate features or expose license state.
carrentory_pro_loaded$pluginadd_action( 'carrentory_pro_loaded', function ( $plugin ) {
do_action( 'my_site_carrentory_pro_ready', $plugin );
}, 10, 1 );
carrentory_settings_registry_registeredActionFreeNotifies custom integration code when settings registry registered occurs, using only the documented callback context.
carrentory_settings_registry_registered$settings_componentadd_action( 'carrentory_settings_registry_registered', function ( $settings_component ) {
do_action( 'my_site_carrentory_event', $settings_component );
}, 10, 1 );
carrentory_settings_schema_fieldsFilterFreeExtends the reviewed settings schema fields integration data while preserving validation and protected boundaries.
carrentory_settings_schema_fields$fields, $settings_component$fields with the same documented data type.add_filter( 'carrentory_settings_schema_fields', function ( $fields, $settings_component ) {
// Adjust only documented or project-owned values.
return $fields;
}, 10, 2 );
carrentory_settings_sensitive_keysFilterFreeAdds custom setting keys to the protected sensitive-key list. Existing protected keys are always retained and cannot be removed.
carrentory_settings_sensitive_keys$keys, $settings_schema$keys with the same documented data type.add_filter( 'carrentory_settings_sensitive_keys', function ( $keys, $settings_schema ) {
$keys[] = 'my_site_api_token';
return array_values( array_unique( $keys ) );
}, 10, 2 );
CarRentory Pro is an optional separate add-on for advanced pricing, Stripe payments, financial visibility and faster booking administration. CarRentory Free remains fully usable without it.
Open a vehicle and add one or more seasonal periods with a start date, end date and daily price.
Both boundary dates are included. Periods cannot overlap. Days outside a seasonal period use the vehicle’s base daily price.
Open a location and set an optional pickup fee, drop-off fee or both.
Enable Stripe in CarRentory → Settings → Payments. Start in test mode and add the matching test secret key, payment title and webhook secret.
Create a public HTTPS webhook endpoint in Stripe Dashboard:
https://your-domain.com/?carrentory_stripe_webhook=1
checkout.session.completed
checkout.session.expired
payment_intent.payment_failed
After saving the webhook secret, complete a Stripe test booking and confirm that the payment status updates in CarRentory. Enable automatic booking confirmation only after the webhook test passes.
Enable Prices include VAT in CarRentory → Settings → Tax / VAT when the prices entered for vehicles, seasonal periods, extras and location fees already include tax. CarRentory separates the net and VAT amounts for the breakdown without adding VAT a second time.
| Page | What it shows | Export |
|---|---|---|
| Payments Report | Revenue, paid amount, balance due and booking totals grouped by payment status. | Filtered CSV from the page toolbar. |
| Outstanding Balance | Bookings with unpaid or partially paid balances, customer contact details and the amount still due. | Filtered CSV from the page toolbar. |
| Dashboard | Financial summary cards for a quick daily overview. | No dashboard export; use the reports for detailed CSV data. |
Print views, reports and CSV files read the saved booking snapshot. They do not recalculate old bookings with current vehicle prices, seasonal rates, fees or VAT settings.
Quick row actions let authorized administrators update booking status and payment status without opening every booking. Review the new status immediately after each action, especially before sending customer communication.
Send a support request with your website URL, plugin version, WordPress version and a short description of the issue.