首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >add_action( 'wpcf7_before_send_mail')不调用/挂起我的函数

add_action( 'wpcf7_before_send_mail')不调用/挂起我的函数
EN

Stack Overflow用户
提问于 2017-10-13 15:41:06
回答 1查看 3.6K关注 0票数 0

我试图从我们的Contact7表单中发布数据,然后将这些数据保存在mysql的表中。我是WordPress的新手。我遵循了其他人的准则。但是我没有运气在我的桌子上收到数据。我觉得add_action-wpcf7 7_ spelled _mail不能挂起我的函数,因为我在函数中写错了拼写错误的代码或遗漏了代码,以测试它是否有效。但是,当我从wordpress表单提交数据时,没有显示错误。下面是我的代码,请评论任何可能有用的东西。谢谢!

代码语言:javascript
复制
add_action('wpcf7_before_send_mail','contactform7_before_send_mail',1);

function contactform7_before_send_mail( $contact_form ) {       
  $wpcf7_data->skip_mail = true;
  global $wpdb;   
  $title = $contact_form->title();   

  $submission = WPCF7_Submission::get_instance();
  if ( $submission ) {
    $formData = $submission->get_posted_data();     
  }

  if ( 'Membership-2' == $title ) {   
    $name = $formData['your-name'];     
    $email = $formData['your-email'];   
    $company = $formData['your-company'];   
    $title = $formData['your-title'];   
    $location = $formData['your-location']; 
  }

  $wpdb->insert('aoe84i5nxf_member_info', array('id' => null,'name' => $name,'email' => $email,'company' => $company,'title' => $title, 'location' => $location), array(null,'%s','%s','%s','%s','%d') ); 
}
remove_all_filters ('wpcf7_before_send_mail');
EN

回答 1

Stack Overflow用户

发布于 2018-02-21 09:50:20

试试这个:

代码语言:javascript
复制
add_action('wpcf7_before_send_mail','contactform7_before_send_mail',1);

function contactform7_before_send_mail( $contact_form ) {       

    if ( !isset($contact_form->posted_data) && class_exists('WPCF7_Submission') ) {
        $submission = WPCF7_Submission::get_instance();
        if ( $submission ) {
            $formData = $submission->get_posted_data();     
        }
    } else {
        // We can't retrieve the form data
        return $contact_form;
    }

    if ( 'Membership-2' == $contact_form->title() ) {   
        $contact_form->skip_mail = true;

        $name = $formData['your-name'];     
        $email = $formData['your-email'];   
        $company = $formData['your-company'];   
        $title = $formData['your-title'];   
        $location = $formData['your-location']; 

        global $wpdb;
        $wpdb->insert('aoe84i5nxf_member_info', array('id' => null,'name' => $name,'email' => $email,'company' => $company,'title' => $title, 'location' => $location), array(null,'%s','%s','%s','%s','%d') ); 
    }

    return $contact_form;

}

它对代码进行了一些更改:

  1. 检查是否可以检索表单提交数据。
  2. 更正一些表单数据对象变量名($wpcf7_data)。
  3. 确保skip_mail和数据库插入只发生在成员-2的表单提交.
  4. 移除remove_all_filters行--这将简单地解除自定义函数的挂钩,因此它将永远不会运行。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46733508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档