wordpress 如何把订阅表单数据同步保存到用户列表里

在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 );

就这样,订阅后同步到用户列表的功能就完成了。

版权属于: sbboke版权所有。

转载时必须以链接形式注明作者和原始出处及本声明。

张贴在Wordpress

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论