我需要做的是在用户订阅我的Wordpress网站的同一时间发送自定义表单。 我正在使用hook add_action“user_register”,这是我的代码:
<?php
add_action('user_register', 'my_function');
function my_function($user_id) {
$user_info = get_userdata($user_id);
$username = $user_info->user_login;
$mail = $user_info->user_email;
?>
<form id="my-form" action="http://....." method="get">
<input type="hidden" name="list" value="9">
<input type="email" name="email" value="<?php echo $mail; ?>">
<input type="hidden" name="campo1" value="campo1">
<input type="hidden" name="username" value="<?php echo $username; ?>">
<input type="submit" />
</form>
<script type="text/javascript">
document.getElementById('my-form').submit();
</script>
<?php } ?>
我做错了什么?功能正常,钩子也有不同的功能。 例如,我尝试了类似的东西:
<?php
add_action('user_register', 'my_function');
function my_function($user_id) {
$user_info = get_userdata($user_id);
$username = $user_info->user_login;
$mail = $user_info->user_email;
update_option('mail_test', $mail);
} ?>
有什么想法吗?在此先感谢您的帮助。
答案 0 :(得分:0)
我不建议挂钩user_registration操作,当用户从wp-admin注册或在后端创建用户时会发生什么? Wordpress将尝试发送一些不存在的随机表单数据,这可能会导致问题。
执行此操作的方法是在验证表单数据后以编程方式创建用户。你可以这样做......
if( $_POST ) {
//Do all your validation then if all is correct use the following
$password = wp_generate_password( 12, false );
$user_id = wp_create_user( $email, $password, $username );
//Set the user information
wp_update_user(
array(
'ID' => $user_id,
'nickname' => $firstname . ' ' . $lastname,
'display_name' => $firstname . ' ' . $lastname,
'first_name' => $firstname,
'last_name' => $lastname
)
);
}
用您喜欢的任何内容替换用户电子邮件和姓名的所有变量,并且不要忘记使用此方法,用户将不会自动收到任何确认,因此您必须向他们显示他们的登录信息和成功消息中的密码或使用wp_mail向他们发送电子邮件。
希望有所帮助
此致
丹