我想使用get\\u post\\u meta从CPT中动态提取一个值,然后发送一封电子邮件。
问题是get\\u post\\u meta($post->ID,…)部分代码无法从CPT metabox中提取电子邮件。如果将$post->ID替换为post ID示例“254”,则整个函数工作正常。有没有办法让get\\u post\\u meta动态使用post ID
<?php
////////////////////////////////////////////////////////////////////
// Fire mail on post page and CPT
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Add Hooks for Email
////////////////////////////////////////////////////////////////////
add_action(\'new_to_publish\', \'send_emails_on_new_event\');
add_action(\'post_updated\', \'send_emails_on_new_event\');
////////////////////////////////////////////////////////////////////
// SET EMAIL FROM ADDRESS
////////////////////////////////////////////////////////////////////
function change_mail_from() {
return "[email protected]";
}
add_filter ("wp_mail_from", "change_mail_from");
////////////////////////////////////////////////////////////////////
// SET EMAIL FROM NAME
////////////////////////////////////////////////////////////////////
function change_from_name() {
return "Some Where";
}
add_filter ("wp_mail_from_name", "change_from_name");
////////////////////////////////////////////////////////////////////
// SET EMAIL TYPE TO HTML
////////////////////////////////////////////////////////////////////
function wpse27856_set_content_type(){
return "text/html";
}
add_filter( \'wp_mail_content_type\',\'wpse27856_set_content_type\' );
////////////////////////////////////////////////////////////////////
// Send emails on event publication
////////////////////////////////////////////////////////////////////
function send_emails_on_new_event($post_id)
{
$post = get_post($post_id);
$post_id = $post->ID;
$post_type = \'CPT name\'; //post, page, attachment or
whatever other CPT you may have
$author = get_userdata($post->post_author);
$author_id = $author->ID;
$extra_email = get_post_meta($post->ID, \'_metabox_flied_from_CPT_with_extra_email\', true);
$admin_email = get_option(\'admin_email\');
$emails = "$admin_email, $extra_email, $author->user_email"; //If you want to send to site administrator, use $emails = get_option(\'admin_email\');
$title = wp_strip_all_tags(get_the_title($post->ID));
$url = get_permalink($post->ID);
////////////////////////////////////////////////////////////////////
// Email lay out
////////////////////////////////////////////////////////////////////
ob_start(); ?>
<html>
<head>
<title></title>
</head>
<body>
<p>
Hi
</p>
<p>
<?php echo $author->user_login ;?> has created a new entry maintenance system.
</p>
<p>
Some Content
</p>
</body>
</html>
<?php
$message = ob_get_contents();
ob_end_clean();
if(get_post_type($post_id) === $post_type)
wp_mail($emails, "New/Updated Post. Ref number $title", $message);
}?>
备注:
有趣的是,如果你更新一篇文章,一切都会很好。
add_action(\'post_updated\', \'send_emails_on_new_event\');