WC_Email_Customer_Fulfillment_Created::maybe_init_fulfillment_for_preview
Initialize fulfillment for email preview.
This method sets up a dummy fulfillment object when the email is being previewed in the admin.
Method of the class: WC_Email_Customer_Fulfillment_Created{}
Hooks from the method
Returns
null. Nothing (null).
Usage
// private - for code of main (parent) class only $result = $this->maybe_init_fulfillment_for_preview( $order );
- $order(WC_Order) (required)
- The order object.
Changelog
| Since 10.1.0 | Introduced. |
WC_Email_Customer_Fulfillment_Created::maybe_init_fulfillment_for_preview() WC Email Customer Fulfillment Created::maybe init fulfillment for preview code WC 10.7.0
private function maybe_init_fulfillment_for_preview( $order ) {
/**
* Filter to determine if this is an email preview.
*
* @since 9.8.0
*/
$is_email_preview = apply_filters( 'woocommerce_is_email_preview', false );
if ( $is_email_preview ) {
// If this is a preview, we need to set up a dummy fulfillment object.
$this->fulfillment = new Fulfillment();
$this->fulfillment->set_items(
array_map(
function ( $item ) {
return array(
'item_id' => $item->get_id(),
'qty' => 1,
);
},
$order->get_items()
)
);
// Some private meta data to simulate a real fulfillment.
$this->fulfillment->add_meta_data( '_tracking_number', '123456789' );
$this->fulfillment->add_meta_data( '_shipment_provider', 'dhl' );
$this->fulfillment->add_meta_data( '_tracking_url', 'https://www.dhl.com/tracking/123456789' );
// Some public data to simulate a real fulfillment.
$this->fulfillment->add_meta_data( 'service', 'Standard Shipping' );
$this->fulfillment->add_meta_data( 'expected_delivery', '2025-06-30' );
// Add translations for metadata keys.
add_filter(
'woocommerce_fulfillment_meta_key_translations',
function ( $keys ) {
$keys['service'] = __( 'Service', 'woocommerce' );
$keys['expected_delivery'] = __( 'Expected Delivery', 'woocommerce' );
return $keys;
}
);
}
}