تخفیف

سبد خرید

نمایش خلاصه ای از خرید هایی که شما انجام خواهید داد

مبلغ کل
0
تسویه حساب
سبد خرید خالی می باشد

هدایت کاربران به صفحه خاص بر حسب نقش کاربری آنها در وردپرس
امین صفرپور
امین صفرپور
تعداد کل دانلود ها : 1283059
تعداد کل مطالب : 1858

هدایت کاربران به صفحه خاص بر حسب نقش کاربری آنها در وردپرس

تعداد دانلود:
0
تعداد بازدید:
909
تاریخ:
دسته بندی:

هشتگ ها :

#نقش کاربری

امروزه وردپرس بیشتر به عنوان یک چارچوب برای برنامه‌های کاربردی وِب استفاده می‌شود. در همین راستا، یک سری امور مهم پیش می‌‌آیند که وردپرس آنها را پوشش نمی‌دهد و این برنامه‌نویس می‌باشد که باید امکاناتی به وردپرس اضافه نماید تا نیازها برطرف شوند. به عنوان مثال، آیا واقعاً می‌خواهید کاربران سایت‌تان صفحه مدیریت وردپرس را ببینند؟!

جواب این سوال معمولاً ” نه ” می‌باشد!

در این مطلب روشی را برای شما آموزش خواهم داد که با استفاده از آن بتوانید کاربران سایت را بر حسب نقش کاربری که دارند به صفحه مورد نظر خود هدایت کنید.

تنظیم‌های اولیه

گام نخست را با ساختن یک افزونه شروع می‌کنیم. بهتر است که این امکان را به صورت افزونه برای سایت خود مهیا نمایید تا بعدها اگر پوسته سایت خود را عوض کردید به مشکل برخورد نکنید.

در داخل دایرکتوری wp-contents/plugins یک پوشه با نام “cm-redirect-by-role” ایجاد کنید و داخل این پوشه یک فایل با نام cm-redirect-by-role.php ایجاد کنید. داخل این فایل، ابتدا اطلاعات پایه‌ای که در قسمت هدر افزونه‌ها باید باشند را وارد می‌کنیم.

<?php
/*
Plugin Name: Redirect Users by Role
Plugin URI:
Description: Redirects users based on their role
Version: 1.0
Author: SFNdesign, Curtis McHale
Author URI: http://sfndesign.ca
License: GPLv2 or later
*/
 
/*
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/
// TODO ?>

حال که افزونه راه افتاد، بگزارید نگاهی به چگونگی ورود کاربر بیاندازیم.

روند ورود کاربر

مکان پیش‌فرضی که کاربر می‌تواند از طریق آن وارد سایت ورپرسی شما شود،http://sitehshoma.com/wp-login.php می‌باشد. وقتی که از آن مکان وارد سایت می‌شوید، وردپرس شما را به صفحه پیشخوان می‌برد.

این به معنای این است که بخش مدیریت وردپرس راه‌اندازی می‌شود و شما احتیاج به یک admin action دارید تا کاربر را شناسایی کنید. از آنجایی که اک‌شِنِ admin_init در زمانی اجرا می‌شود که به اطلاعات کاربر دسترسی پیدا کردیم ولی هنوز کاربر چیزی در پیشخوان خود نمی‌بیند، پس بهتر است به اصطلاح این اک‌شِن را hook کنیم.

استفاده از اک‌شِنِ admin_init به این معناست که علاوه بر کاربرانی که قصد ورود به سایت‌تان را دارند، کاربران وارد شده به سایت نیز در صورتی که قصد ورود به بخش مدیریت وردپرس را داشته باشند، به صفحه مورد نظرمان هدایت خواهند شد.

خوب اجازه دهید نگاهی به تکه کدمان بیاندازیم. در مثال زیر تمام کاربران با نقش کاربری “مشترک” (subscriber) را هدایت خواهیم کرد ولی می‌توانید بجای آن هر نقش کاربری دیگری که مد نظرتان می‌باشد را وارد نمایید.

/**
 * Redirects users based on their role
 *
 * @since 1.0
 * @author SFNdesign, Curtis McHale
 *
 * @uses wp_get_current_user()          Returns a WP_User object for the current user
 * @uses wp_redirect()                  Redirects the user to the specified URL
 */
function cm_redirect_users_by_role() {
 
    $current_user   = wp_get_current_user();
    $role_name      = $current_user->roles[0];
 
    if ( 'subscriber' === $role_name ) {
        wp_redirect( 'http://yoursite.com/dashboard' );
    } // if
 
} // cm_redirect_users_by_role
add_action( 'admin_init', 'cm_redirect_users_by_role' );

این پروسه را با دریافت اطلاعات کاربر کنونی شروع می‌کنیم که برای این کار از دستورwp_get_current_user() استفاده کردیم. با استفاده از آن نام نقش کاربریِ کاربر کنونی را در متغیر$role_name ذخیره می‌کنیم.

سپس با دستور if بررسی می‌کنیم که آیا $role_name با نقش کاربری مد نظر ما تطابق دارد یا خیر. در صورتی که تطابق داشته باشد، با استفاده از دستور wp_redirect کاربر را به صفحه مورد نظرمان هدایت می‌کنیم.

با وجود اینکه تا همین مرحله افزونه کار خود را انجام خواهد داد، اما باید یک مورد دیگر نیز به آن اضافه کنیم. باید آن را از نظر AJAX امن کنیم.

ایمن سازی AJAX

زمانی که می‌خواهید در وردپرس فراخوانی‌های AJAX انجام دهید، بهتر است همیشه فایل مسیریاب AJAX وردپرس را فراخوانی کنید که داخل بخش مدیریت وردپرس می‌باشد. اگر کدهای‌مان را به همین صورت که در بالا آمده بگذاریم، هر فراخوانی AJAX که با نقش کاربری استفاده شده در کدهای ما انجام شود، رد خواهد شد چون به شرطی که در کد گذاشتیم برخورد خواهد کرد و هدایت خواهد شد.

برای رفع این مشکل ابتدا باید بررسی کنیم که آیا در حال حاظر فراخوانی AJAX انجام می‌دهیم یا نه، که در صورتی که در حال فراخوانی بودیم، بخش چک کردن و هدایت کاربر انجام نشود.

function cm_redirect_users_by_role() {
 
    if ( ! defined( 'DOING_AJAX' ) ) {
 
        $current_user   = wp_get_current_user();
        $role_name      = $current_user->roles[0];
 
        if ( 'subscriber' === $role_name ) {
            wp_redirect( 'http://yoursite.com/dashboard' );
        } // if $role_name
 
    } // if DOING_AJAX
 
} // cm_redirect_users_by_role
add_action( 'admin_init', 'cm_redirect_users_by_role' );

اکنون تابع هدایت‌گر ما داخل یک شرط قرار گرفته است و این شرط وجود ثابت DOING_AJAX را بررسی می‌کند و در صورت موجود بودن آن، به این معنی است که ما در حال فراخوانی یک درخواست AJAX هستیم و بنابراین کدهای هدایت شدن کاربر اجرا نمی‌شوند.

نتیجه گیری

و به این صورت ما می‌توانیم کاربران را بر حسب نقش کاربری که دارند به صفحه مورد نظرمان هدایت کنیم. در صورت نیاز حتی می‌توانیم کاربرانی با نقش‌های کاربری مختلف را به صفحات مختلفی هدایت کنیم.

برای انجام این کار تنها لازم است که یک شرط دوم که با نقش دوم تطبیق پیدا کند اضافه کنیم و سپس مقصد مورد نظر برای آن کاربر را تنظیم کنیم.

محصولات مشابه فروشی
هشتگ ها :

این محصول بدون نظر می باشد شما میتوانید اولین نظر را ثبت کنید

ارسال نظر

آخرین های مشابه مشاهده بیشتر

  • تلفن : 04136383693
  • پیامک : 500020606688
  • آدرس : آذربایجان شرقی، تبریز، شهرک مصلی، خیابان راجی، راجی 4، کوچه بیست هشتم، قطعه 1339، طبقه چهارم

ملت وب در سال 1393 فعالیت خود را در چهار بخش قالب های آماده، طراحی لوگو، طراحی سایت، طراحی بنر آغاز کرده است، که در مدت بسیار کم با تلاش های بی وقفه خود و همکاران توانسته بزرگترین وب سایت ارائه دهنده قالب های با کیفیت در ایران باشد رمز موفقیت شرکت ملت وب پشتیبانی بی دریغ از کاربران خود می باشد ما موقعیت خود را مدیون مشتریان وفادار خود هستیم پس همیشه همراهشان خواهیم بود .

  • logo-samandehi