// 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 ) );
			}
		}
	}
}
Geef een reactie 0