在WordPress中,是没有订阅表单的概念的,平常我们在用户列表中看到的订阅者的用户,实际上是通过注册用户时,用户的角色为订阅者。如果当你想要单纯显示一个订阅表单时,你只能通过第三方插件来支持。
但是第三方插件的表单,客户填写完表单后,订阅的数据是保存到插件的表里,并不显示在用户的列表中,所以有没有办法在订阅的同时也注册用户呢?
下面我用wpforms这个插件来做演示,如何在订阅的同时也注册用户到用户列表
1.先安装wpforms插件,安装完毕后建立一个订阅表单
注意,从上面的图片可以看到,这个订阅表单的ID为1930
下面来到要应用表单的地方,比如在小部件中添加订阅表单
现在就是关键的添加代码的操作了,来到主题编辑器里,打开functions.php文件,在文件的最后面添加以下的代码
// 在 WPForms 提交后处理函数中捕获表单提交事件
function wpf_subscribe_to_user_list( $fields, $entry, $form_data, $entry_id ) {
// 检查表单 ID,确保是订阅表单
if ( $form_data['id'] == 1930 ) { // 替换为你的表单 ID
// 获取邮箱地址
$email = '';
// 遍历 fields 数组,查找包含邮箱地址的键值对
foreach ($fields as $key => $value) {
// 判断值是否是邮箱地址的格式
if (filter_var($value['value'], FILTER_VALIDATE_EMAIL)) {
// 找到邮箱地址后保存,并退出循环
$email = $value['value'];
break;
}
}
// 检查用户是否已经存在
$user = get_user_by( 'email', $email );
// 如果用户不存在,将其添加到用户列表中
if ( ! $user ) {
$userdata = array(
'user_email' => $email,
'user_login' => $email,
'role' => 'subscriber', // 设置用户角色为订阅者
);
wp_insert_user( $userdata );
}
}
}
add_action( 'wpforms_process_complete', 'wpf_subscribe_to_user_list', 10, 4 );
就这样,订阅后同步到用户列表的功能就完成了。