【问题标题】:Associate WP/WooCommerce user with CF7 form将 WP/WooCommerce 用户与 CF7 表单相关联
【发布时间】:2020-11-27 19:55:22
【问题描述】:
如果在 WP 的“会员区”中使用 CF7 表单,如果用户最初是通过 WooCommmerce 购买创建的,是否有办法关联谁提交表单?
我知道我们可以只要求他们的用户名作为表单的一部分,但我正在寻找一种更好的方法来解决这个问题,即表单会自动提取用户 ID。然后,我们将通过 webhook 推送表单提交,并根据表单响应在后端添加自动化。这只是我正在寻求帮助的第一部分,我还没有找到任何好的文章。
【问题讨论】:
标签:
wordpress
woocommerce
contact-form-7
【解决方案1】:
WordPress 允许您使用函数get_current_user_id() 查询当前登录用户的给定请求/表单提交。但是,在 REST api/AJAX 调用期间不会保留登录的用户凭据。 CF7 使用 REST api 提交表单,因此无法使用此功能进行 CF7 表单提交。
你有两种方法可以解决这个问题,
.1。使用Smart Grid-layout extension,它修复了CF7插件的许多编码问题,其中之一是在表单提交时保留用户凭据,因此允许您使用上述功能,
add_action('wpcf7_before_send_mail', 'get_cf7_user');
function get_cf7_user($form){
$user_id = get_current_user_id();
switch($user_id){
case 0: //no user logged in.
break;
default: //registered user ID.
$user = wp_get_current_user(); //this is another fn which will get you the user object.
break;
}
}
.2。或者,您需要将当前用户的 ID 作为隐藏字段添加到表单中,以便在提交表单后检索它。有关示例,请参阅此 answer。