【问题标题】:Wordpress: Saving Form Data and POST externalWordpress:保存表单数据和 POST 外部
【发布时间】:2017-02-26 07:32:13
【问题描述】:
我正在 Wordpress 中创建一个预订表单,它将数据发送到外部 CRM(在本例中为 Airship),同时还将数据存储在 Wordpress CMS 中,然后可以自动通过电子邮件发送。
目前我已经尝试过 Contact Form 7 和其他一些插件,但这需要它自己的 action="/?page_id=1327&preview=true#wpcf7-f1326-p1327-o1"(就像构建时的页面预览一样)。
Airship CRM 也有它自己的 action="http://atwbar.com/linkitajax.php" 来提交数据。
任何建议/建议将不胜感激!
【问题讨论】:
标签:
php
wordpress
forms
content-management-system
crm
【解决方案1】:
当我想保存一些特殊数据、将表单处理到 crm 或只是重定向我的所有表单时,我使用 Contact form 7 挂钩:wpcf7_before_send_mail
这是一个将任何表单重定向到页面的示例(从我完成的实用程序插件中提取,因此,不要关心未设置和会话行、选项...)。
add_action('wpcf7_before_send_mail', 'mail_send_redirection');
function mail_send_redirection($contactform){
$submission = WPCF7_Submission::get_instance();
if($options['_redirect_all_forms'] == 'false' && $contact_form->prop( 'redirection_settings' ) == 'false'){
return;
}
$redirection_form_id = $contact_form->prop( 'redirection_settings' );
$redirection_page_id = (empty($redirection_form_id)) ? $options['_thank_you_url'] : $redirection_form_id;
$nonce = wp_create_nonce('redirect-user-action');
if($contact_form->prop( 'redirection_message' ) != ''){
$args = array(
'html' => false,
'exclude_blank' => false );
$message = wpcf7_mail_replace_tags( $contact_form->prop( 'redirection_message' ), $args );
unset($_SESSION['bcf7u_nonce']);
unset($_SESSION['bcf7u_message']);
unset($_SESSION['bcf7u_pageid']);
$_SESSION['_nonce'] = $nonce;
$_SESSION['_pageid'] = $redirection_page_id;
$_SESSION['_message'] = $message;
}
$contact_form->skip_mail = false;
$contact_form->set_properties(
array(
'additional_settings' => "on_sent_ok: \"location.replace('" . get_permalink($redirection_page_id) . "/?nonce=" . $nonce . "');\""));
}
要保存表单字段,只需使用 update_post_meta。
还有其他方法可以基于 wp_ajax_no_priv_{$action} 动作和 js 发送请求。
告诉我它是否对您有帮助,或者您是否需要更多提示!