我有以下代码作为函数将表单数据添加到数据库usermeta表中,然后发送一封一切正常的电子邮件。问题是表单卡在加载图像上,无论如何我都找不到让它重定向或显示确认消息,任何帮助将不胜感激。我尝试使用另一个函数wpcf7_mail_sent但没有任何反应,尝试了表单的其他设置并卡住了。
add_action('wpcf7_before_send_mail', 'cf7import',1);
function cf7import() {
$title = $contact_form->title;
$submission = WPCF7_Submission::get_instance();
if ( $submission )
{
$posted_data = $submission->get_posted_data();
$formtitle = $cfdata->title; }
if ( $formtitle == 'Apply Form') {
}
global $wpdb;
$user_id = get_current_user_id();
update_user_meta( $user_id, 'prefix', $posted_data['prefix'] );
update_user_meta( $user_id, 'first_name', $posted_data['first-name'] );
update_user_meta( $user_id, 'middle_name', $posted_data['middle-name'] );
global $current_user;
get_currentuserinfo();
$email_address = 'contact@website.com';
// write the email content
$header .= "MIME-Version: 1.0n";
$header .= "Content-Type: text/html; charset=utf-8n";
$header .= "From:" . $email_address;
$subject = 'New Application Form';
$message = "Hi,<br/><br/>".$posted_data['first-name'].' '.$posted_data['last-name']."<br/><br/>";
$message .= "Your application has been submitted successfully";
wp_mail($current_user->user_email, $subject, $message, $header);
}
代码的问题在于没有定义 $contact_form。
你可以使用这样的东西:
add_action('wpcf7_before_send_mail', 'cf7import', 1);
function cf7import($contact_form) {
$submission = WPCF7_Submission::get_instance();
if ( $submission ){
$posted_data = $submission->get_posted_data();
$formtitle = $contact_form->title();
}
if ( $formtitle == 'Apply Form') {
global $wpdb, $current_user;
$user_id = get_current_user_id();
update_user_meta( $user_id, 'prefix', $posted_data['prefix'] );
update_user_meta( $user_id, 'first_name', $posted_data['first-name'] );
update_user_meta( $user_id, 'middle_name', $posted_data['middle-name'] );
get_currentuserinfo();
$email_address = 'contact@website.com';
// write the email content
$header = "MIME-Version: 1.0n";
$header .= "Content-Type: text/html; charset=utf-8n";
$header .= "From:" . $email_address;
$subject = 'New Application Form';
$message = "Hi,<br/><br/>".$posted_data['first-name'].' '.$posted_data['last-name']."<br/><br/>";
$message .= "Your application has been submitted successfully";
wp_mail($current_user->user_email, $subject, $message, $header);
}
}
还使代码更具可读性并修复了一些其他问题(如果有条件且未定义$header则为空)。
代码实际上可以正常工作,因为它与"WP作业管理器 - 联系人列表"插件冲突,该插件阻止了它的工作