使用wpmail()作为Wordpress functions.php中的条件语句

时间:2018-04-08 10:17:20

标签: php wordpress function email shortcode

我的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');

1 个答案:

答案 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 );