下面是一個完整的答案是會腳你的需要。您必須在第二個功能中設置經銷商列表中電子郵件和名稱的數組。
此代碼將在後臺訂單編輯頁面顯示定製metabox有一個選擇,是你會設一個經銷商,你會點擊「保存訂單」 ......
新秩序的通知電子郵件將只發送一次到該經銷商的電子郵件地址。
下面是代碼:
//Adding Meta container admin shop_order pages
add_action('add_meta_boxes', 'my_custom_order_meta_box');
if (! function_exists('my_custom_order_meta_box'))
{
function my_custom_order_meta_box()
{
global $woocommerce, $order, $post;
add_meta_box('dealer_dispatch', __('Dealer Dispatch','woocommerce'), 'add_order_custom_fields_for_packaging', 'shop_order', 'side', 'core');
}
}
//adding Meta field in the meta container admin shop_order pages
if (! function_exists('add_order_custom_fields_for_packaging'))
{
function add_order_custom_fields_for_packaging()
{
global $woocommerce, $order, $post;
// Define HERE your array of values <== <== <== <== <== <== <== <==
$option_values = array(
'default' => __('no selection', 'woocommerce'),
'[email protected]' => 'Dealer 1 Name',
'[email protected]' => 'Dealer 2 Name',
'[email protected]' => 'Dealer 3 Name',
);
// Get the values from the custom-fields (if they exist)
$meta_field_data = get_post_meta($post->ID, '_dealer_dispatch', true);
$dealer_email_sent = get_post_meta($post->ID, '_dealer_email_sent', true);
echo '<input type="hidden" name="my-custom-order_meta-box-nonce" value="'. wp_create_nonce() .'">
<label for="dealer_dispatch">'.__('Select a dealer', 'woocommerce').'</label><br>
<select name="dealer_dispatch">';
foreach($option_values as $option_key => $option_value){
if ($meta_field_data == $option_key || 'default' == $option_key)
$selected = ' selected';
else
$selected = '';
echo '<option value="'.$option_key.'"'.$selected.'>'. $option_value.'</option>';
}
echo '</select><br>';
// if an email has been sent to the dealer we display a message
if(! empty($dealer_email_sent))
echo '<p style="color:green; font-weight:bold;">'.__('Email sent to: ', 'woocommerce').$dealer_email_sent.'</p>';
}
}
//Save the data of the Meta field
add_action('save_post', 'add_my_custom_field_for_order_meta_box', 20, 1);
if (! function_exists('add_my_custom_field_for_order_meta_box'))
{
function add_my_custom_field_for_order_meta_box($post_id) {
## Verify and securing data. ##
// Check if our nonce is set.
if (! isset($_POST[ 'my-custom-order_meta-box-nonce' ])) {
return $post_id;
}
$nonce = $_REQUEST[ 'my-custom-order_meta-box-nonce' ];
//Verify that the nonce is valid.
if (! wp_verify_nonce($nonce)) {
return $post_id;
}
// Continuing only if form is submited.
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
// Check and set the user's permissions.
if ('page' == $_POST[ 'post_type' ]) {
if (! current_user_can('edit_page', $post_id)) {
return $post_id;
}
} else {
if (! current_user_can('edit_post', $post_id)) {
return $post_id;
}
}
// -- -- IT IS SECURED NOW -- --
// Sanitize input and update order meta data custom field.
$dealer_dispatch = $_POST[ 'dealer_dispatch' ];
// Saving the selected value
if('default' != $dealer_dispatch)
update_post_meta($post_id, '_dealer_dispatch', sanitize_text_field($dealer_dispatch));
# SEND CUSTOM EMAIL ONLY ONCE #
$dealer_dispatch_val = get_post_meta($post_id, '_dealer_dispatch', true);
$dealer_email_sent = get_post_meta($post_id, '_dealer_email_sent', true);
if(empty($dealer_email_sent) && !empty($dealer_dispatch_val)){
$email_notifications = WC()->mailer()->get_emails();
$email_notifications['WC_Email_New_Order']->recipient = $dealer_dispatch;
$email_notifications['WC_Email_New_Order']->trigger($post_id);
// Creating a custom meta data for this order to avoid sending this email 2 times
update_post_meta($post_id, '_dealer_email_sent', $dealer_dispatch_val);
}
}
}
代碼放在您的活動子主題(或主題)的function.php文件或也以任何插件文件。
此代碼已經過測試並可正常工作。