Automattic\WooCommerce\Internal\EmailEditor
TransactionalEmailPersonalizer::prepare_context_data
Prepare context data for email personalization. Adds new order specific context data.
Method of the class: TransactionalEmailPersonalizer{}
Hooks from the method
Returns
Array. Context data for personalization
Usage
$TransactionalEmailPersonalizer = new TransactionalEmailPersonalizer(); $TransactionalEmailPersonalizer->prepare_context_data( $previous_context, $email ): array;
- $previous_context(array) (required)
- Previous version of context data.
- $email(WC_Email) (required)
- The WooCommerce email object.
TransactionalEmailPersonalizer::prepare_context_data() TransactionalEmailPersonalizer::prepare context data code WC 10.7.0
public function prepare_context_data( array $previous_context, \WC_Email $email ): array {
$context = $previous_context;
$context['recipient_email'] = $email->get_recipient();
$context['order'] = $email->object instanceof \WC_Order ? $email->object : null;
// For emails of type new_user or reset_password we want to set user directly from the object.
if ( $email->object instanceof \WP_User ) {
$context['wp_user'] = $email->object;
} elseif ( $email->object instanceof \WC_Order ) {
$context['wp_user'] = $email->object->get_user();
} else {
$context['wp_user'] = null;
}
$context['wc_email'] = $email;
$core_context = $context;
/**
* Filters the context data for email personalization.
*
* This filter fires after core defaults are set, allowing extensions
* to override values like wp_user for custom email types (e.g., WooCommerce Bookings).
*
* @since 10.5.0
* @param array $context Context data including core defaults.
* @param \WC_Email $email The WooCommerce email object.
* @return array Context data for personalization
*/
$context = apply_filters( 'woocommerce_email_editor_integration_personalizer_context_data', $context, $email );
if ( ! is_array( $context ) ) {
$context = $core_context;
}
return $context;
}