我的Wordpress网站上运行了“高级自定义字段”,我希望根据要更改的“选择”选项触发通知。
例如,如果“内容状态”更改为“收集”,则应发送电子邮件。我设法将其作为短代码工作,因此当我将此短代码放在自定义帖子类型上时,它可以正常工作。但是,它仅在每次选择更改时发送一次邮件。
因此,当我选择“收集”作为选项时,我们会发送电子邮件。然后我将选项更改为“已发送”,然后再次返回“收集”,它不会再次发送收集通知。我错过了什么吗?
// Shortcode to send mail based on Content Status being 'Collect'
function my_vc_shortcode_mail( $atts ) {
if ( get_field( 'content_status' ) == 'collect' ): ?>
<?php
add_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
$to = 'john@johndoe.com';
$subject = 'Time to collect your products';
$body = 'The email body content';
wp_mail( $to, $subject, $body );
// Reset content-type to avoid conflicts -- https://core.trac.wordpress.org/ticket/23578
remove_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
function wpdocs_set_html_mail_content_type() {
return 'text/html';
}
?>
<?php endif;
}
add_shortcode( 'my_mail', 'my_vc_shortcode_mail');
答案 0 :(得分:0)
在这里,您将在保存帖子时发送HTML格式的电子邮件。
function user_collect_send_email( $post_id ) {
if ( get_field( 'content_status', $post_id ) === 'collect' ):
$to = 'john@johndoe.com';
$subject = 'Time to collect your products';
$body = 'The email body content';
wp_mail( $to, $subject, $body );
endif;
}
add_action( 'save_post', 'user_collect_send_email' );
function emails_set_content_type(){
return "text/html";
}
add_filter( 'wp_mail_content_type', 'emails_set_content_type' );
或者,您可以通过设置标题来设置每种电子邮件格式,而不是设置内容类型过滤器。
$headers[] = "Content-type: text/html";
wp_mail( $to, $subject, $body, $headers );