2016-08-19 65 views
0

我想發出一個通知電子郵件作者在自定義字段元是由add_post_metaupdate_post_meta添加到他們的WordPress的帖子。WordPress的發送郵件上add_post_meta

遠遠低於我的代碼成功工作,但只有當我用它執行保存後

function order_update_send_email($post_id) { 

$email_sent = get_post_meta($post_id, 'email_sent', true); 
$report = get_post_meta($post_id, 'report', true); 

if ($email_sent == 'Sent') { 
    return; 
} 
if ($report) { 
$post_title = get_the_title($post_id); 
$post_url = get_permalink($post_id); 
$subject = 'Your report for: ' . $post_title; 

$message = "Your order is completed\n\n"; 
$message .= "Report for: " . $post_title . "\n\n Link:" . $post_url; 
$message .= "\n\n" . $report; 

wp_mail('[email protected]', $subject, $message); 
update_post_meta($post_id, 'email_sent', 'Sent'); 
} 
} 
add_action('save_post', 'order_update_send_email'); 

在上面的代碼中的行動掛鉤save_post工作正常,但我不能讓add_post_metaupdate_post_meta工作。

任何人請諮詢,謝謝。

+0

對不起,他們是沒有辦法的。因爲update_post_meta和add_post_meta在wordpress之後/之前沒有任何動作。你必須編輯wordpress核心來創建一個動作。 – anik4e

回答

0

你可以使用下面的示例代碼。

add_action('added_post_meta', 'wp_afterpostmeta', 10, 4); 
add_action('updated_post_meta', 'wp_afterpostmeta', 10, 4); 
function wp_afterpostmeta($meta_id, $post_id, $meta_key, $meta_value) 
{ 
    if ('wp_meta_key' == $meta_key) { 
     wp_do_something($post_id, $meta_value); 
    } 
}