-1
ユーザーがWooCommerceに登録する際に電子メール検証手順を追加したいと思います。 WordPressはユーザーの電子メールに確認リンクを電子メールで送信します。リンクをクリックすると、ユーザーのアカウントがアクティブになります。どうすればいい?WooCommerceの電子メール検証機能を追加するには
ユーザーがWooCommerceに登録する際に電子メール検証手順を追加したいと思います。 WordPressはユーザーの電子メールに確認リンクを電子メールで送信します。リンクをクリックすると、ユーザーのアカウントがアクティブになります。どうすればいい?WooCommerceの電子メール検証機能を追加するには
私は
がテーマのfunctions.phpファイルにこのコードを追加します...それのためのコードを発見しました。
// this is just to prevent the user log in automatically after register
function wc_registration_redirect($redirect_to) {
wp_logout();
wp_redirect('/sign-in/?q=');
exit;
}
// when user login, we will check whether this guy email is verify
function wp_authenticate_user($userdata) {
$isActivated = get_user_meta($userdata->ID, 'is_activated', true);
if (!$isActivated) {
$userdata = new WP_Error(
'inkfool_confirmation_error',
__('<strong>ERROR:</strong> Your account has to be activated before you can login. You can resend by clicking <a href="/sign-in/?u='.$userdata->ID.'">here</a>', 'inkfool')
);
}
return $userdata;
}
// when a user register we need to send them an email to verify their account
function my_user_register($user_id) {
// get user data
$user_info = get_userdata($user_id);
// create md5 code to verify later
$code = md5(time());
// make it into a code to send it to user via email
$string = array('id'=>$user_id, 'code'=>$code);
// create the activation code and activation status
update_user_meta($user_id, 'is_activated', 0);
update_user_meta($user_id, 'activationcode', $code);
// create the url
$url = get_site_url(). '/sign-in/?p=' .base64_encode(serialize($string));
// basically we will edit here to make this nicer
$html = 'Please click the following links <br/><br/> <a href="'.$url.'">'.$url.'</a>';
// send an email out to user
wc_mail($user_info->user_email, __('Please activate your account'), $html);
}
// we need this to handle all the getty hacks i made
function my_init(){
// check whether we get the activation message
if(isset($_GET['p'])){
$data = unserialize(base64_decode($_GET['p']));
$code = get_user_meta($data['id'], 'activationcode', true);
// check whether the code given is the same as ours
if($code == $data['code']){
// update the db on the activation process
update_user_meta($data['id'], 'is_activated', 1);
wc_add_notice(__('<strong>Success:</strong> Your account has been activated! ', 'inkfool') );
}else{
wc_add_notice(__('<strong>Error:</strong> Activation fails, please contact our administrator. ', 'inkfool') );
}
}
if(isset($_GET['q'])){
wc_add_notice(__('<strong>Error:</strong> Your account has to be activated before you can login. Please check your email.', 'inkfool'));
}
if(isset($_GET['u'])){
my_user_register($_GET['u']);
wc_add_notice(__('<strong>Succes:</strong> Your activation email has been resend. Please check your email.', 'inkfool'));
}
}
// hooks handler
add_action('init', 'my_init');
add_filter('woocommerce_registration_redirect', 'wc_registration_redirect');
add_filter('wp_authenticate_user', 'wp_authenticate_user',10,2);
add_action('user_register', 'my_user_register',10,2);
しかし、このプラグインには、ワードプレスでユーザーを追加しないという問題があります。 –
Stack Overflowはコードを記述するためのものではありません。問題の内容については、具体的な詳細を述べなければなりません。コード。スクリーンショット。期待される結果と実際の結果。良い質問はめったに1文ではありません。 –
いいえ十分な詳細を提供していないため、私はできません。詳細がなければ、あなたの質問に答えることは非常に難しいです。 –