一旦用户使用了我通过acf创建的表格,我就会尝试发送一封确认电子邮件。
以下是我在插件中使用的代码,但是不知何故wp_email没有发送电子邮件。没有收到,也没有收到错误。
function my_pre_save_post( $post_id ) {
// check if this is to be a new post
if( $post_id != 'new_post' ) {
return $post_id;
}
// Create a new post
$post = array(
'id' => $post_id,
'post_status' => 'publish',
'post_title' => $_POST['acf']['_post_title'],
'email' => $_POST['acf']['field_5d49dcb49a31f'],
'bedrag' => $_POST['acf']['field_5d49dd749a321'],
'periodiek' => $_POST['acf']['field_5d49de569a322'],
);
// // insert the post
$post_id = wp_insert_post( $post );
add_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
$name = get_field('post_title', $post_id);
$email = get_field('email', $post_id);
$body_text = get_field('email_tekst', 'option');
$to = $name . ' <' . $email . '>' . "\r\n";
$headers = array('Content-Type: text/html; charset=UTF-8', 'From: Some name <info@somedomain.com> <noreply@'.$_SERVER['HTTP_HOST'].'>');
$subject = 'Bedankt voor uw donatie: ' . get_field('bedrag', $post_id) . ' ' . get_field('periodiek', $post_id);
$body = $body_text;
wp_mail($to, $subject, $body, $headers );
remove_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
// return the new ID
return $post_id;
}
add_filter('acf/pre_save_post' , 'my_pre_save_post');
保存表单有效,因为我在后端看到数据。 但是我只是没有收到电子邮件。
为确保发送电子邮件,我正在使用插件(wp邮件smtp)。
我想念什么吗?
答案 0 :(得分:0)
好的,我知道出了什么问题。
我没有使用正确的优先级。
现在使用以下代码:
function wpdocs_set_html_mail_content_type() {
return 'text/html';
}
add_action('acf/save_post' , 'my_save_post', 15);
function my_save_post($post_id) {
if( get_post_type($post_id) !== 'donations' ) {
return;
}
add_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
$name = get_field('post_title', $post_id);
$email = get_field('email', $post_id);
$body_text = get_field('email_tekst', 'option');
$to = $email;
$headers = array('From: some name <some email> <noreply@'.$_SERVER['HTTP_HOST'].'>');
$subject = 'Bedankt voor uw donatie: ' . get_field('bedrag', $post_id) . ' ' . get_field('periodiek', $post_id);
$message = $body_text;
wp_mail($to, $subject, $message, $headers );
remove_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
}
现在优先级为15,因此保存完成后运行。