如何在发送之前挂钩联系表格7

时间:2015-04-28 17:38:16

标签: wordpress wordpress-plugin contact-form-7

我有一个插件,我写的是我想与Contact Form 7进行互动。 在我的插件中,我添加了以下操作add_action

add_action("wpcf7_before_send_mail", "wpcf7_do_something_else");

function wpcf7_do_something_else(&$wpcf7_data) {

    // Here is the variable where the data are stored!
    var_dump($wpcf7_data);

    // If you want to skip mailing the data, you can do it...
    $wpcf7_data->skip_mail = true;

}

我提交了联系表单,但add_action我没有做任何事情。 联系表格7时,我不确定如何使我的插件拦截或做某事 做点什么。任何,如何做到这一点的帮助?

4 个答案:

答案 0 :(得分:20)

我必须这样做以防止发送电子邮件。希望它有所帮助。

new Thread(new Runnable() {
    public void run() {
        ServerAccessMobile serverAccessMobile = new ServerAccessMobile(); 

    ArrayList <String> dataFromServer = **serverAccessMobile.getDataFromServer()**;

    ArrayList <String> dataToSend = .....

    serverAccessMobile.setDataOServer(dataToSend);
    }
}).start();

此代码假定您运行上述代码的最新版本的CF7,直到几个月前他们去做并重新编写代码。 [4月28日&#39; 15]

答案 1 :(得分:9)

我想补充一点,您可以使用<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script> <div id="results"></div>过滤器:

wpcf7_skip_mail

答案 2 :(得分:3)

自WPCF7 5.2起,wpcf7_before_send_mail挂钩已发生了很大变化。供参考,这里是如何在5.2+版本中使用此钩子的方法

跳过邮件

function my_skip_mail() {
    return true; // true skips sending the email
}
add_filter('wpcf7_skip_mail','my_skip_mail');

或在管理区域的表单上的“其他设置”标签中添加skip_mail

获取表格ID或帖子ID

function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {

    $post_id = $submission->get_meta('container_post_id');
    $form_id = $contact_form->id();

    // do something       

    return $contact_form;
    
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );

获取用户输入的数据

function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {

    $your_name = $submission->get_posted_data('your-field-name');

    // do something       

    return $contact_form;
    
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );

将电子邮件发送给动态收件人

function wpcf7_before_send_mail_function( $contact_form, $abort, $submission ) {

    $dynamic_email = 'email@email.com'; // get your email address...

    $properties = $contact_form->get_properties();
    $properties['mail']['recipient'] = $dynamic_email;
    $contact_form->set_properties($properties);

    return $contact_form;
    
}
add_filter( 'wpcf7_before_send_mail', 'wpcf7_before_send_mail_function', 10, 3 );

答案 3 :(得分:1)

您可以在其他设置中启用演示模式,这样可以防止发送电子邮件。请参阅下面的CF7文档。

  

如果您在其他设置字段中设置demo_mode: on,则为该联系人   表单将处于演示模式。在此模式下,联系表格将   跳过发送邮件的过程,只显示“已完成   成功“作为回应消息。