تنظیمات وردپرس و ووکامرس برای محدود شدن نمایش محصولات به کاربران ثبت نام شده + تایید ثبت نام توسط ادمین +سورس کد | علی قلعه بان
تنظیمات وردپرس و ووکامرس برای محدود شدن نمایش محصولات به کاربران ثبت نام شده + تایید ثبت نام توسط ادمین +سورس کد : اگر هم شما دارای فروشگاهی اینترنتی هستید و اقدام به فروش محصولات اینترنی میکنید شاید برای شما مهم باشد که صرفا کاربران عضو فروشگاه صرفا به اطلاعات محصولات دسترسی داشته باشند و از طرفی هویت و عضویت این کاربران از طرف شما تایید شود باید مراحل زیر را انجام دهید. در حالت عادی ابتدا باید ثبت نام را در ووکامرس فعال نمایید چون اگر متوجه باشید صرفا در صفحه حساب کاربری ووکامرس امکان لاگین فعال بوده و صفحه ثبت نام وجود ندارد ابتدا برای همین منظور در بخش تنظیمات ووکامرس به بخش accounts مراجعه کرده و گزینه Enable registration on the “My Account” page را تیک بزنید تا فعال شود .
Find The Best Beard Salon In Dubai
بعد از فعال شدن این گزینه شما گزینه ثبت نام را در کنار صفحه لاگین مشاهده خواهید کرد ولی این همه قضیه نیست و ایراداتی دارد چرا که کاربر بعد از وارد کردن ایمیل خود در بخش ثبت نام بلافاصله ثبت نام و تایید و وارد سایت خواهد شد برای جلوگیری از این امر میتوانید ابتدا پلاگین New User Approve را بر روی وردپرس نصب نمایید بعد از نصب این پلاگین حتما به خاطر داشته باشید که در بخش تنظیمات وردپرس گزینه Anyone can register را تیک بزنید تا فعال شود .
بعد از انجام مراحل بالا حالا با قرار دادن کد زیر در functions.php قرار دهید تا بعد از ثبت نام کاربر انها را بصورت اتوماتیک لاگ اوت نماید تا منتظر تایید ادمین و ارسال نام کاربری و رمز باشند .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function user_autologout(){ if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); $user_id = $current_user->ID; $approved_status = get_user_meta($user_id, 'wp-approve-user', true); //if the user hasn't been approved yet by WP Approve User plugin, destroy the cookie to kill the session and log them out if ( $approved_status == 1 ){ return $redirect_url; } else{ wp_logout(); return get_permalink(woocommerce_get_page_id('myaccount')) . "?approved=false"; } } } add_action('woocommerce_registration_redirect', 'user_autologout', 2); function registration_message(){ $not_approved_message = '<p class="registration">Send in your registration application today! NOTE: Your account will be held for moderation and you will be unable to login until it is approved.</p>'; if( isset($_REQUEST['approved']) ){ $approved = $_REQUEST['approved']; if ($approved == 'false') echo '<p class="registration successful">Registration successful! You will be notified upon approval of your account.</p>'; else echo $not_approved_message; } else echo $not_approved_message; } add_action('woocommerce_before_customer_login_form', 'registration_message', 2); |
خوب داستان اینجا تمام نمیشود چون در حالت عادی وقتی کاربری در وردپرس ثبت نام میکند فقط یکبار برای وی ایمیل ارسال میشود ولی وقتی ما این ثبت نام را دو مرحله ای میکنیم بایستی تغییراتی بدهیم تا بعد از تایید ثبت نام کاربر یک ایمیل دیگر برای ارسال نام کاربری و پسورد برای کاربر ارسال شود برای این منظور در مسیر قالب فعلی خود woocommerceemails اگر این پوشه موجود بود که هیچ در غیراینصورت پوشه ای با عنوان emails باز کنید و در داخل آن فایلی با عنوان customer-account-approved.php بسازید و کد زیر را در آن قرار دهید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php if (!defined('ABSPATH')) exit; ?> <?php do_action('woocommerce_email_header', $email_heading); ?> <p><?php echo sprintf(__("Good news! Your account has been approved. You can now login here: %s.", 'woocommerce'), get_permalink(woocommerce_get_page_id('myaccount'))); ?></p> <ul> <li><?php echo sprintf(__('Username: %s', 'woocommerce'), $user_login); ?></li> <li><?php echo sprintf(__('Password: %s', 'woocommerce'), $user_pass); ?></li> </ul> <p><?php echo sprintf(__("Thanks for registering with %s!", 'woocommerce'), $blogname); ?></p> <div style="clear:both;"></div> <?php do_action('woocommerce_email_footer'); ?> |
خوب در این مرحله کد زیر را در درون functions.php قرار دهید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
//Email Notifications //Content parsing borrowed from: woocommerce/classes/class-wc-email.php function send_user_approve_email($user_id){ global $woocommerce; //Instantiate mailer $mailer = $woocommerce->mailer(); if (!$user_id) return; $user = new WP_User($user_id); $user_login = stripslashes($user->user_login); $user_email = stripslashes($user->user_email); $user_pass = "As specified during registration"; $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $subject = apply_filters( 'woocommerce_email_subject_customer_new_account', sprintf( __( 'Your account on %s has been approved!', 'woocommerce'), $blogname ), $user ); $email_heading = "User $user_login has been approved"; // Buffer ob_start(); // Get mail template woocommerce_get_template('emails/customer-account-approved.php', array( 'user_login' => $user_login, 'user_pass' => $user_pass, 'blogname' => $blogname, 'email_heading' => $email_heading )); // Get contents $message = ob_get_clean(); // Send the mail woocommerce_mail( $user_email, $subject, $message, $headers = "Content-Type: text/htmlrn", $attachments = "" ); } add_action('wpau_approve', 'send_user_approve_email', 10, 1); function send_user_unapprove_email($user_id){ return; } add_action('wpau_unapprove', 'send_user_unapprove_email', 10, 1); |
حالا تقریبا کار تمام شده و شما میتوانید کاربران ثبت نام کرده را تایید و یا رد کنید و همچنین نمایش محصولات خود را برای کاربران لاگین نشده محدود کنید از طریق کد زیر میتوانید مشخص کنید که اگر کاربری لاگین نکرده باشید صرفا قادر به صفحه اصلی وب سایت بوده و نتواند به بخش محصولات برود و در صورت اینکه بخواهد روی محصولات کلیک کند به صفحه اصلی ریدایرکت خواهد شد
1 2 3 4 5 6 7 8 9 10 11 |
function wpse_131562_redirect() { if ( ! is_user_logged_in() && (is_woocommerce() || is_cart() || is_checkout()) ) { // feel free to customize the following line to suit your needs wp_redirect(home_url()); exit; } } add_action('template_redirect', 'wpse_131562_redirect'); |