wordpress上有一个带有反馈表联系表的站点7 我需要在某些条件下阻止提交表单。为此,我使用了我在functions.php中规定的跳过邮件过滤器
function my_skip_mail($skip_mail, $contact_form) {
if( /* your condition */ )
$skip_mail = true; // true skips sending the email
return $skip_mail;
}
add_filter('wpcf7_skip_mail','my_skip_mail');
我做了一个检查,检查通过了(我监控了这个 var_dump),但是这封信仍然被发送了。在表单本身的附加字段中设置skip_mail参数也无济于事。
如果不阻止电子邮件的发送,skip_mail 是如何工作的?特定条件下如何取消寄信?
UDP原来更有趣!这封电子邮件似乎带有“感谢您的消息。它已成功发送”消息。和检查的操作wpcf7mailsent,但它并没有真正到达收件人。但是,如果您关闭过滤器,那么它就来了..您如何检查跳过是否有效,而不是显示有关成功发送的消息,而是写一个错误?
我查看了 CF7 代码 - 你做的一切都是正确的。最有可能的是,过滤器设置在其他地方
wpcf7_skip_mail,然后返回false。尝试提高过滤器优先级是的,如果不是 1,您必须指定传递给过滤器的参数数量。
我回答我自己的问题:
add_filter( 'wpcf7_skip_mail','my_skip_mail', PHP_INT_MAX, 2 );以及如何检查跳过是否有效并写入错误而不是显示有关成功发送的消息?写在过滤器里面
wpcf7_skip_mailadd_filter("wpcf7_feedback_response", function ($response) { $response["status"] = "mail_sent_ng"; $response["message"] = "Ошибка"; return $response; }, PHP_INT_MAX);并返回
return true;