Filter
uncanny-automator
automator_surecart_hydrate_product_tokens
Filters SureCart product data before it's used in automations.
add_filter( 'automator_surecart_hydrate_product_tokens', $callback, 10, 3 );
Description
Allows developers to modify the parsed SureCart product tokens before they are used in automations. This hook is ideal for adding, removing, or altering token values related to SureCart product data, offering fine-grained control over how SureCart information is integrated into your automations.
Usage
add_filter( 'automator_surecart_hydrate_product_tokens', 'your_function_name', 10, 3 );
Parameters
-
$parsed(mixed) - This parameter contains the data that has already been parsed for the SureCart product tokens.
-
$args(mixed) - This parameter contains the parsed product data that is being processed by the hook.
-
$trigger(mixed) - This parameter contains the arguments passed to the trigger that fired, providing context for the hydration process.
Return Value
The filtered value.
Examples
add_filter(
'automator_surecart_hydrate_product_tokens',
function ( $parsed, $args, $trigger ) {
// Example: Add a custom token to include the customer's email address if it's not already present.
// This assumes $purchase_data is accessible or can be derived from $args.
// For demonstration, let's assume $args contains the purchase data or has a key to access it.
if ( isset( $args['purchase_data']['customer_email'] ) && ! empty( $args['purchase_data']['customer_email'] ) ) {
$parsed['CUSTOMER_EMAIL'] = $args['purchase_data']['customer_email'];
}
// You might also want to modify existing tokens based on certain conditions.
// For example, if the order discount is very high, you might want to highlight it.
if ( isset( $parsed['ORDER_DISCOUNT'] ) && floatval( str_replace( '$', '', $parsed['ORDER_DISCOUNT'] ) ) > 100 ) {
$parsed['ORDER_DISCOUNT_ALERT'] = 'Significant discount applied!';
}
return $parsed;
},
10,
3
);
Placement
This code should be placed in the functions.php file of your active theme, a custom plugin, or using a code snippets plugin.
Source Code
src/integrations/surecart/tokens/surecart-tokens.php:287
public function hydrate_product_tokens( $parsed, $args, $trigger ) {
$purchase = array_shift( $args['trigger_args'] );
$purchase_data = $this->get_hydrated_purchase( $purchase->id );
$price = $this->get_price( $purchase_data );
$amount = $this->get_amount( $price );
$price_type = $this->get_price_type( $price );
$download_names = $this->get_download_names( $purchase_data );
$download_urls = $this->get_download_urls( $purchase_data );
$download_links = $this->get_download_links( $purchase_data );
$chekout = $purchase_data->initial_order->checkout;
$parsed = $parsed + array(
'PRODUCT' => $purchase_data->product->name,
'PRODUCT_ID' => $purchase_data->product->id,
'PRODUCT_THUMB_ID' => isset( $purchase_data->product->image ) ? $purchase_data->product->image : '',
'PRODUCT_THUMB' => isset( $purchase_data->product->image_url ) ? $purchase_data->product->image_url : '',
'PRODUCT_PRICE' => $amount,
'PRODUCT_PRICE_ID' => isset( $price->id ) ? $price->id : '',
'PRODUCT_PAYMENT_TYPE' => $price_type,
'PRODUCT_TRIAL_DAYS' => empty( $price->trial_duration_days ) ? '' : $price->trial_duration_days,
'PRODUCT_DOWNLOAD_URL' => $download_urls,
'PRODUCT_DOWNLOAD_LINK' => $download_links,
'PRODUCT_DOWNLOAD_TITLE' => $download_names,
'ORDER_ID' => $purchase_data->initial_order->id,
'SUBSCRIPTION_ID' => isset( $purchase_data->subscription->id ) ? $purchase_data->subscription->id : '',
'ORDER_NUMBER' => $purchase_data->initial_order->number,
'ORDER_DATE' => gmdate( get_option( 'date_format', 'F j, Y' ), $purchase_data->initial_order->created_at ),
'ORDER_STATUS' => $purchase_data->initial_order->status,
'ORDER_PAID_AMOUNT' => $this->format_amount( $chekout->charge->amount ),
'ORDER_SUBTOTAL' => $this->format_amount( $chekout->subtotal_amount ),
'ORDER_TOTAL' => $this->format_amount( $chekout->total_amount ),
'PAYMENT_METHOD' => isset( $chekout->payment_method->processor_type ) ? $chekout->payment_method->processor_type : '',
'ORDER_COUPON' => empty( $chekout->discount->coupon->name ) ? '' : $chekout->discount->coupon->name,
'ORDER_DISCOUNT' => $this->format_amount( $chekout->discount_amount ),
);
$parsed = $this->hydrate_shipping_tokens( $parsed, $purchase_data );
$parsed = $this->hydrate_billing_tokens( $parsed, $purchase_data );
return apply_filters( 'automator_surecart_hydrate_product_tokens', $parsed, $args, $trigger );
}