doupin2013 2015-12-03 10:30
浏览 40
已采纳

创建自定义帖子类型时,Wordpress会向所选用户发送电子邮件

I am building a wordpress plugin that adds the custom post type "bookings" to the dashboard. This post type allows the admin to create a booking form and assign it to a user (from a drop down list of users) - this info (i.e. the user selected) is stored in the wp_postmeta DB table as 'wedding_user'.

What I want to do is email the selected user when a booking (post type) is created.

Here is what I have so far, I know this will send an email when the custom post type is created, how do I add the selected user email address in there though?

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 <bookings@thedistractionsband.co.uk>';
    // lets cc in the head just because we can 
    $headers[] = 'Cc: Joseph Malik <sam.skirrow@gmail.com>';
    // 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');

Output of 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" 
} 

Below is the code used to render the meta boxes in the custom post type:

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>

...

}
  • 写回答

1条回答 默认 最新

  • duanliaolan6178 2015-12-03 11:21
    关注

    Change your metabox code to have the options value attributes contain the user email instead of 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>";
    }
    

    Then in the notify_client function:

    $user_email_address = $_POST['wedding_user'];
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体