// Voeg een metabox toe om handmatige invoer van trakcing code mogelijk te maken (CMB2 NDOIG - anders met ACF aanmaken)
add_action( 'cmb2_admin_init', 'wbmz_order_metabox' );
function wbmz_order_metabox() {
$cmb = new_cmb2_box( array(
'id' => 'order_tracking_info',
'title' => 'Track & trace informatie',
'object_types' => array( 'shop_order', ),
'context' => 'side',
'priority' => 'high',
'show_names' => true,
) );
$cmb->add_field( array(
'name' => 'Track & trace code',
'id' => '_order_track',
'type' => 'text',
) );
$cmb->add_field( array(
'name' => 'Track & trace URL',
'id' => '_order_track_url',
'type' => 'text_url',
'protocols' => array( 'http', 'https' ),
) );
}
// Check de track & trace URL voor de provider naam. (kan ook opgeslagen worden in _order_track_provider)
function wbmz_get_tracking_provider_from_url( $url ) {
if ( strpos( $url, 'postnl.nl' ) !== false ) {
return 'PostNL';
}
if ( strpos( $url, 'dpd.com' ) !== false ) {
return 'DPD';
}
if ( strpos( $url, 'dhlparcel.nl' ) !== false ) {
return 'DHL Parcel';
}
if ( strpos( $url, 'dhl.com' ) !== false ) {
return 'DHL';
}
return null;
}
// Als het kan, voeg de tracking info toe aan de order complete mail.
add_action( 'woocommerce_email_order_details', 'wbmz_add_tracking_info_to_order_completed_email', 5, 4 );
function wbmz_add_tracking_info_to_order_completed_email( $order, $sent_to_admin, $plain_text, $email ) {
/* // Alleen klanten moeten dit kunnen zien.
if ( ! $sent_to_admin ) {
return;
}
*/
if ( 'customer_completed_order' == $email->id ) {
$order_id = $order->get_id();
$tracking_number = get_post_meta( $order_id, '_order_track', true );
$tracking_url = get_post_meta( $order_id, '_order_track_url', true );
// Stop als de tracking info er niet is
if ( empty( $tracking_number ) || empty( $tracking_url ) ) {
return;
}
$tracking_provider = wbmz_get_tracking_provider_from_url( $tracking_url );
// Voeg de info toe
if ( $plain_text ) {
if ( ! empty( $tracking_provider ) ) {
printf( "\nUw bestelling is verzonden met %s. De track & trace code is %s en je kan je verzending volgen via %s.\n", $tracking_provider, esc_html( $tracking_number ), esc_url( $tracking_url, array( 'http', 'https' ) ) );
}
else {
printf( "\nUw bestelling is verzonden. De track & trace code is %s en je kan je verzending volgen via %s.\n", esc_html( $tracking_number ), esc_url( $tracking_url, array( 'http', 'https' ) ) );
}
}
else {
if ( ! empty( $tracking_provider ) ) {
printf( '<p>Uw bestelling is verzonden met <strong>%s</strong>. De track & trace code is <strong><a href="%s">%s</a></strong>.</p>', $tracking_provider, esc_url( $tracking_url, array( 'http', 'https' ) ), esc_html( $tracking_number ) );
}
else {
printf( '<p>Uw bestelling is verzonden. De track & trace code is <strong><a href="%s">%s</a></strong>.</p>', esc_url( $tracking_url, array( 'http', 'https' ) ), esc_html( $tracking_number ) );
}
}
}
}
#mail #order complete #shipment #trace #track #verzending #woocommerce