2015-12-03 54 views
0

我正在構建一個將自定義帖子類型「預訂」添加到儀表板的wordpress插件。此帖子類型允許管理員創建預訂表單並將其分配給用戶(從用戶的下拉列表中) - 該信息(即,所選用戶)作爲'wedding_user'存儲在wp_postmeta數據庫表中。Wordpress在創建自定義帖子類型時向選定用戶發送電子郵件

我想要做的是在預訂(郵政類型)創建時向選定的用戶發送電子郵件。

這是我到目前爲止,我知道這將在創建自定義帖子類型時發送電子郵件,但是如何在那裏添加選定的用戶電子郵件地址?

輸出的 var_dump($_POST);

array(59) { 
    ["_wpnonce"]=> string(10) "0d5335d18f" 
    ["_wp_http_referer"]=> string(60) "/distractions-login/wp-admin/post-new.php?post_type=bookings" 
    ["user_ID"]=> int(1) 
    ["action"]=> string(8) "editpost" 
    ["originalaction"]=> string(8) "editpost" 
    ["post_author"]=> int(1) 
    ["post_type"]=> string(8) "bookings" 
    ["original_post_status"]=> string(10) "auto-draft" 
    ["referredby"]=> string(79) "http://www.skizzar.com/distractions-login/wp-admin/post.php?post=80&action=edit" 
    ["_wp_original_http_referer"]=> string(79) "http://www.skizzar.com/distractions-login/wp-admin/post.php?post=80&action=edit" 
    ["auto_draft"]=> string(1) "1" 
    ["post_ID"]=> string(2) "81" 
    ["meta-box-order-nonce"]=> string(10) "14fd434c70" 
    ["closedpostboxesnonce"]=> string(10) "2b04c74cd9" 
    ["post_title"]=> string(15) "Test Booking 13" 
    ["samplepermalinknonce"]=> string(10) "4589b08166" 
    ["wp-preview"]=> string(0) "" 
    ["hidden_post_status"]=> string(5) "draft" 
    ["post_status"]=> string(7) "publish" 
    ["hidden_post_password"]=> string(0) "" 
    ["hidden_post_visibility"]=> string(6) "public" 
    ["visibility"]=> string(6) "public" 
    ["post_password"]=> string(0) "" 
    ["mm"]=> string(2) "12" 
    ["jj"]=> string(2) "03" 
    ["aa"]=> string(4) "2015" 
    ["hh"]=> string(2) "11" 
    ["mn"]=> string(2) "05" 
    ["ss"]=> string(2) "06" 
    ["hidden_mm"]=> string(2) "12" 
    ["cur_mm"]=> string(2) "12" 
    ["hidden_jj"]=> string(2) "03" 
    ["cur_jj"]=> string(2) "03" 
    ["hidden_aa"]=> string(4) "2015" 
    ["cur_aa"]=> string(4) "2015" 
    ["hidden_hh"]=> string(2) "11" 
    ["cur_hh"]=> string(2) "11" 
    ["hidden_mn"]=> string(2) "05" 
    ["cur_mn"]=> string(2) "05" 
    ["original_publish"]=> string(7) "Publish" 
    ["publish"]=> string(7) "Publish" 
    ["booking_details"]=> string(10) "54291c7a09" 
    ["wedding_name"]=> string(15) "Test Booking 13" 
    ["wedding_user"]=> string(9) "Test User" 
    ["wedding_date"]=> string(10) "30/12/2015" 
    ["wedding_package"]=> string(9) "Package 1" 
    ["wedding_price"]=> string(5) "45768" 
    ["wedding_payment_due_date"]=> string(10) "28/01/2016" 
    ["wedding_hidden_todays_date"]=> string(10) "03/12/2015" 
    ["wedding_hidden_is_viewed"]=> string(0) "" 
    ["wedding_hidden_is_completed"]=> string(0) "" 
    ["wedding_hidden_date_completed"]=> string(0) "" 
    ["deposit_paid"]=> string(0) "" 
    ["full_paid"]=> string(0) "" 
    ["post_name"]=> string(0) "" 
    ["post_mime_type"]=> string(0) "" 
    ["ID"]=> int(81) 
    ["comment_status"]=> string(6) "closed" 
    ["ping_status"]=> string(6) "closed" 
} 

下面

function notify_client($post_ID) { 
// a conditional to check that this is a new post 
if(($_POST['post_status'] == 'publish') && ($_POST['original_post_status'] != 'publish')) { 

    $user_email_address = USER EMAIL ADDRESS 

    // create the from details 
    $headers[] = 'From: Bookings <[email protected]>'; 
    // lets cc in the head just because we can 
    $headers[] = 'Cc: Joseph Malik <[email protected]>'; 
    // separate the users array 
    $send_to = $user_email_address; 
    // concatenate a message together 
    $message = 'Test Message'; 
    // and finally send the email 
    wp_mail($send_to, "Test Message", $message, $headers); 
    return $post_ID; 
    } 
} 
add_action('publish_bookings', 'notify_client'); 

是用來渲染的元框自定義職位類型代碼:

public function bookings_meta_boxes() { 
    add_meta_box(
     'booking_details', 
     'Booking Details', 
     array($this, 'render_meta_boxes'), 
     'bookings', 
     'normal', 
     'high' 
    ); 
} 

function render_meta_boxes($post) { 
    wp_nonce_field(basename(__FILE__), 'booking_details'); 
    $prfx_stored_meta = get_post_meta($post->ID); 

<p> 
<label for="wedding_user" class="prfx-row-title"><?php _e('Wedding Guest', 'prfx-textdomain')?></label> 
<select name="wedding_user" id="wedding_user"> 
    <?php 
    $users = get_users(); 
    $i = 0; 
    // Array of WP_User objects. 
    foreach ($users as $user) { 
     echo "<option value='".esc_html($user->display_name)."' "; 
     if (isset($prfx_stored_meta['wedding_user'])) 
     echo selected($prfx_stored_meta['wedding_user'][0], esc_html($user->display_name)); 
     echo ">" . esc_html($user->display_name) . "</option>"; 
    } 
    ?> 

</select> 
</p> 

... 

} 
+0

'get_userdata($ _ POST [ 'wedding_user']) - > USER_EMAIL;'或者類似的 - 沒有真正的方法來幫助沒有更多的信息 – Steve

+0

感謝@Steve - 不幸的是沒沒有工作。我可以給你什麼額外的信息? –

+0

婚禮用戶如何存儲在帖子中?作爲元場?基本上,你會在'$ _POST'數據中找到用戶標識(我用'$ _POST ['wedding_user']'作爲例子,因爲我不知道確切的結構) - 如果你使用的是像xdebug這樣的debuuger,set一個斷點並檢查'$ _POST' - 如果不是'var_dump($ _ POST);'那麼你將能夠看到如何訪問userid – Steve

回答

1

更改metabox代碼具有期權價值屬性包含用戶電子郵件而不是display_name:

foreach ($users as $user) { 
    echo "<option value='".$user->user_email."' "; //<--here 
    if (isset($prfx_stored_meta['wedding_user'])) 
     echo selected($prfx_stored_meta['wedding_user'][0], $user->user_email); //<-- and here 
    echo ">" . esc_html($user->display_name) . "</option>"; 
} 

然後在notify_client功能:

$user_email_address = $_POST['wedding_user']; 
+0

感謝你這個史蒂夫,偉大的作品 –

+0

太棒了,很高興我可以幫助 – Steve

相關問題