ব্যবহারকারীর অ্যাক্টিভেশন প্রক্রিয়াটি সম্পাদন করতে আপনাকে নিম্নলিখিত পদক্ষেপগুলি করতে হবে:
- নতুন ব্যবহারকারী তৈরির পরে একটি কাস্টম ব্যবহারকারী ক্ষেত্র যুক্ত করুন যা ইঙ্গিত করে যে এই ব্যবহারকারীর তার অ্যাকাউন্টটি সক্রিয় করতে হবে
- অ্যাক্টিভেশন কোড সহ ইমেল প্রেরণ করুন, এই পৃষ্ঠায় ব্যবহারকারীকে সক্রিয় করা হবে যেখানে এই ইমেলের একটি লিঙ্ক সরবরাহ করুন
- অ্যাক্টিভেশন পৃষ্ঠা প্রয়োগ করুন
- ব্যবহারকারী যখন সেই কাস্টম ব্যবহারকারী ক্ষেত্রটি উপস্থিত আছে কিনা তা চেক করে লগ ইন করার চেষ্টা করে। যদি এটি বিদ্যমান থাকে তবে তাকে লগ ইন করবেন না এবং পরিবর্তে অ্যাক্টিভেশন ত্রুটির বার্তাটি দেখান।
কাস্টম ক্ষেত্র যোগ করুন এবং ইমেল প্রেরণ করুন:
function _new_user($data) {
// Separate Data
$default_newuser = array(
'user_pass' => wp_hash_password( $data['user_pass']),
'user_login' => $data['user_login'],
'user_email' => $data['user_email'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'role' => 'pending'
);
$user_id = wp_insert_user($default_newuser);
if ( $user_id && !is_wp_error( $user_id ) ) {
$code = sha1( $user_id . time() );
$activation_link = add_query_arg( array( 'key' => $code, 'user' => $user_id ), get_permalink( /* YOUR ACTIVATION PAGE ID HERE */ ));
add_user_meta( $user_id, 'has_to_be_activated', $code, true );
wp_mail( $data['user_email'], 'ACTIVATION SUBJECT', 'CONGRATS BLA BLA BLA. HERE IS YOUR ACTIVATION LINK: ' . $activation_link );
}
}
লগইনে ব্যবহারকারীর অ্যাক্টিভেশন পরীক্ষা করুন:
// override core function
if ( !function_exists('wp_authenticate') ) :
function wp_authenticate($username, $password) {
$username = sanitize_user($username);
$password = trim($password);
$user = apply_filters('authenticate', null, $username, $password);
if ( $user == null ) {
// TODO what should the error message be? (Or would these even happen?)
// Only needed if all authentication handlers fail to return anything.
$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
} elseif ( get_user_meta( $user->ID, 'has_to_be_activated', true ) != false ) {
$user = new WP_Error('activation_failed', __('<strong>ERROR</strong>: User is not activated.'));
}
$ignore_codes = array('empty_username', 'empty_password');
if (is_wp_error($user) && !in_array($user->get_error_code(), $ignore_codes) ) {
do_action('wp_login_failed', $username);
}
return $user;
}
endif;
অ্যাক্টিভেশন পৃষ্ঠা:
add_action( 'template_redirect', 'wpse8170_activate_user' );
function wpse8170_activate_user() {
if ( is_page() && get_the_ID() == /* YOUR ACTIVATION PAGE ID HERE */ ) {
$user_id = filter_input( INPUT_GET, 'user', FILTER_VALIDATE_INT, array( 'options' => array( 'min_range' => 1 ) ) );
if ( $user_id ) {
// get user meta activation hash field
$code = get_user_meta( $user_id, 'has_to_be_activated', true );
if ( $code == filter_input( INPUT_GET, 'key' ) ) {
delete_user_meta( $user_id, 'has_to_be_activated' );
}
}
}
}
এটি আপনার প্রারম্ভিক বিন্দু, এগিয়ে যান এবং আপনার প্রয়োজনের জন্য এটি সামঞ্জস্য করুন।