Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当使用wpcf7_mail_sent钩子输出内容时,表单无法完成发送的消息_Php_Wordpress_Plugins_Hook - Fatal编程技术网

Php 当使用wpcf7_mail_sent钩子输出内容时,表单无法完成发送的消息

Php 当使用wpcf7_mail_sent钩子输出内容时,表单无法完成发送的消息,php,wordpress,plugins,hook,Php,Wordpress,Plugins,Hook,在WordPress中,我使用wpcf7钩子在表单提交前后执行与Contact Form 7关联的代码。例如,我使用 add_action("wpcf7_before_send_mail", "twilloSendMessage",10,1); …在发送电子邮件之前通过Twilio发送短信。效果很好 然后我想在邮件发送后做一些事情,我使用 // define the wpcf7_mail_sent callback function action_wpcf7_mail_sent( $cont

在WordPress中,我使用wpcf7钩子在表单提交前后执行与Contact Form 7关联的代码。例如,我使用

add_action("wpcf7_before_send_mail", "twilloSendMessage",10,1);
…在发送电子邮件之前通过Twilio发送短信。效果很好

然后我想在邮件发送后做一些事情,我使用

// define the wpcf7_mail_sent callback 
function action_wpcf7_mail_sent( $contact_form ) { 
    // make action magic happen here... 
    $x = 1 + 1; // Operations like this don't cause the form submission to hang
    echo "test"; // ...but when I try outputting to the form page, "message sent" hangs.
}; 

// add the action 
add_action( 'wpcf7_mail_sent', 'action_wpcf7_mail_sent', 10, 1 ); 
“wpcf7_mail_sent”似乎可以工作,因为我可以将代码放在自定义函数action_wpcf7_mail_sent中,代码似乎在这里执行。但是,如果我尝试在“发送后”功能中输出文本,旋转的小GIF会继续旋转,“您的消息已发送”消息框永远不会出现,屏幕上也不会输出任何文本

注意:error.log中不会记录任何内容 注意:控制台没有显示java脚本错误(没有与联系人表单7相关的错误)

我敢肯定,这意味着用于生成“message sent”内容的javascript在wpcf7_mail_sent执行之前实际上并没有完成,而且在钩子回调中放入html或文本内容会干扰javascript。那么,如何使用wpcf7_mail_sent钩子来输出独立于CF7消息发送过程的内容呢


在我想到这一点时,php脚本将在页面加载之前执行。但是,以ajax方式提交表单,并且提交表单不会将客户端重定向到操作页面。我想知道提交后输出到表单页面的唯一方法是否是从action_wpcf7_mail_sent函数中调用某种java脚本来修改DOM。您的意思是成功发送邮件后“test”不是echo?@Dhruv correct,“test”不是echo,甚至尝试输出任何内容都会导致旋转的GIF继续旋转,发送的消息文本也不会输出。看起来解决方案是将java脚本添加到模板的页脚。有一个js函数类似于php wpcf7_mail_sent,名为wpcf7mailsent,当我添加此代码时:
//发送联系人表单7文档。addEventListener('wpcf7mailsent',函数(事件){setTimeout(函数(){alert(???);2500);},false)。。。一切都正常。正如我所想,php脚本将在页面加载之前执行。但是,以ajax方式提交表单,并且提交表单不会将客户端重定向到操作页面。我想知道提交后输出到表单页面的唯一方法是否是从action_wpcf7_mail_sent函数中调用某种java脚本来修改DOM。您的意思是成功发送邮件后“test”不是echo?@Dhruv correct,“test”不是echo,甚至尝试输出任何内容都会导致旋转的GIF继续旋转,发送的消息文本也不会输出。看起来解决方案是将java脚本添加到模板的页脚。有一个js函数类似于php wpcf7_mail_sent,名为wpcf7mailsent,当我添加此代码时:
//发送联系人表单7文档。addEventListener('wpcf7mailsent',函数(事件){setTimeout(函数(){alert(???);2500);},false)。。。一切正常。