Filters in WordPress are a type of callback function that can be defined by the user and are applied to certain values – strings, integers, objects, etc. It is a simple way to adjust code output without actually having to modify the code. Essentially, you add a given function on top of an existing one, to override the logic. Then, when the plugin is updated later, you won’t lose any of your changes.
You can get a detailed description of WordPress hooks here in WP Codex.
WordPress Actions provide a convenient way to “hook” into different plugins without changing their code. Basically, “actions” are user-defined functions, assigned to certain labels, that are called by the plugin core at defined moments of its execution.
Unlike filters, actions do not return any data, they are simply executed.
You can read more about using WordPress actions and assigning your functions to actions in WordPress Codex. Here, we will provide a list of actions defined in the Amelia plugin that you can use to customize it for your needs.
Filters
amelia_manipulate_email_data
Users can use this filter to manipulate email data before Amelia sends email notifications.
$data that is passed to filter: email, subject, body, bcc, attachments.
function example_callback( $data ) { // do something here $data['skipSending'] = true; return $data; } add_filter( 'amelia_manipulate_email_data', 'example_callback', 10, 1 );
amelia_modify_payment_amount
Used to change the final calculated price for booking.
Example:
function example_callback( $price, $booking ) { // change price return $price; } add_filter( 'amelia_modify_payment_amount', 'example_callback', 10, 2 );
amelia_before_stripe_payment
Users can change the data related to Stripe transactions. This data is used to create a payment intent in Stripe.
Example:
function example_callback( $stripeData ) { // change stripe data before creating stripe payment return $stripeData; } add_filter( 'amelia_before_stripe_payment', 'example_callback', 10, 1 );
amelia_before_payment
Users can change the payment data before it is saved in the database.
Example:
function example_callback( $paymentData, $amount ) { // change payment data return $paymentData; } add_filter( 'amelia_before_payment', 'example_callback', 10, 2 );
amelia_get_modified_price
Used for changing the price of booking for WooCommerce orders.
Example:
function example_callback( $paymentAmount, $wcItemAmeliaCache, $bookableData ) { // change price for woocommerce return $paymentAmount; } add_filter( 'amelia_get_modified_price', 'example_callback', 10, 3 );
amelia_checkout_data
Users can change the customer data displayed on WooCommerce’s checkout page.
Example:
function example_callback( $data, $container, $wc_key ) { // change the checkout data on woocommerce checkout page // $data - array with billing_first_name, billing_last_name, billing_email // and billing_phone return $data; } add_filter( 'amelia_checkout_data', 'example_callback', 10, 3 );
amelia/curlopt_ssl_verifypeer
Users can pass the SSL verification when activating the Amelia plugin if the SSL certificate is not set or if it has expired.
Example:
function example_callback() { return 0; } add_filter( 'amelia/curlopt_ssl_verifypeer', 'example_callback', 10, 2 );
A dynamic placeholder filter
A filter that allows users to add any placeholder to a notification and replace it with its appropriate value using this filter. In the notification template, use:
%amelia_dynamic_placeholder_{nameOfPh}%
Example:
function example_callback( $data ) { // return new placeholder return 'custom data'; } add_filter( 'amelia_dynamic_placeholder_{nameOfPh}', 'example_callback', 10, 1 );
Booking Status Filters
- AmeliaAppointmentBookingCanceledFilter
- AmeliaAppointmentBookingAddedFilter
- AmeliaAppointmentBookingStatusUpdatedFilter
- AmeliaEventBookingCanceledFilter
- AmeliaEventBookingAddedFilter
- AmeliaEventBookingStatusUpdatedFilter
These filters allow the users to change/add data being sent to the webhook.
Data sent:
$data = [‘event’/’appointment’ => $appointmentData, ‘bookings’ => $affectedBookings]
Example:
function example_callback( $data ) { return $data; } add_filter( 'AmeliaAppointmentBookingAddedFilter', 'example_callback', 10, 1 );
Booking Status Headers Filters
- AmeliaAppointmentBookingCanceledFilterHeader
- AmeliaAppointmentBookingAddedFilterHeader
- AmeliaAppointmentBookingStatusUpdatedFilterHeader
- AmeliaEventBookingCanceledFilterHeader
- AmeliaEventBookingAddedFilterHeader
- AmeliaEventBookingStatusUpdatedFilterHeader
These filters allow the users to change/add data being sent to the webhook header.
Data sent:
$headers = [‘Content-Type:application/json’]; $data = [‘event’/’appointment’ => $appointmentData, ‘bookings’ => $affectedBookings];
Example:
function example_callback( $header, $data ) { return $headers; } add_filter( 'AmeliaAppointmentBookingAddedFilterHeader', 'example_callback', 10, 2 );
CSV Export Filters
- amelia_before_csv_export_appointments
- amelia_before_csv_export_coupons
- amelia_before_csv_export_customers amelia_before_csv_export_event
- amelia_before_csv_export_payments
Users can add fields in the CSV export of appointments, coupons, customers, event attendees, and payments.
Example:
function export_appointments_hook( $row, $appointment, $separate ) { // $separate - whether bookings inside the same appointment are exported in separate rows or in one row $row['id'] = $appointment['id']; return $row; } add_filter( 'amelia_before_csv_export_appointments', 'export_appointments_hook', 10, 3 ); function export_coupons_hook( $row, $coupon ) { $row['id'] = $coupon['id']; return $row; } add_filter( 'amelia_before_csv_export_coupons', 'export_coupons_hook', 10, 2 );
Actions
AmeliaBookingAddedBeforeNotify
Users can perform actions after the booking is created but before post-booking actions are performed (sending notifications, adding events to Google/Outlook calendars, creating Zoom links, webhooks).
Example:
function example_callback( $data, $container ) { // actions } add_action( 'AmeliaBookingAddedBeforeNotify', 'example_callback', 10, 2 );
AmeliaCustomerWPCreated
Used for actions after a WordPress user is created for an Amelia Customer.
Example:
function example_callback( $customerData, $container ) { // actions } add_action( 'AmeliaCustomerWPCreated', 'example_callback', 10, 2 );
Post-Booking Actions (called at the beginning of the function)
- AmeliaBookingCanceled
- AmeliaBookingAdded
- AmeliaBookingStatusUpdated
Users can perform actions after all the post-booking actions, except for the webhooks, are complete. This is called at the beginning of the function.
Example:
function example_callback( $reservation, $bookings, $container ) { // actions } add_action( 'AmeliaBookingCanceled', 'example_callback', 10, 3 );
Post-Booking Actions (prior to the calling of webhooks)
- AmeliaAppointmentBookingCanceled
- AmeliaAppointmentBookingAdded
- AmeliaAppointmentBookingStatusUpdated
- AmeliaEventBookingCanceled
- AmeliaEventBookingAdded
- AmeliaEventBookingStatusUpdated
Users can perform actions after all the post-booking actions, except for webhooks, are complete. This is called just before the calling of webhooks. The data sent is a little modified here compared to the first call.
Example:
function example_callback( $reservation, $bookings, $container ) { // actions } add_action( 'AmeliaAppointmentBookingCanceled', 'example_callback', 10, 3 );
ameliaScriptsLoaded
Users can perform actions after all the scripts that Amelia uses are loaded (Paypal, Razor Pay, Google maps API…)
Example:
function example_callback( ) { // actions } add_action( 'ameliaScriptsLoaded', 'example_callback', 10, 0 );