Automattic\WooCommerce\Internal\EmailEditor

TransactionalEmailPersonalizer::prepare_context_datapublicWC 1.0

Prepare context data for email personalization. Adds new order specific context data.

Method of the class: TransactionalEmailPersonalizer{}

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() 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;
}