ملت وب مرجع دانلود قالب وردپرس فارسی و قالب فارسی وردپرس و قالب html و افزونه وردپرس
24
ساعت با شما

04144235034

آیا میدانستید دلیل اصلی محبوبیت ملت وب در چیست ؟ ملت وب به عنوان مرجعی پیشرو در پشتیبانی مشتریان خود توانسته رضایت کاربران را در برگیرد در واقع در ملت وب وب شخص پاسخگو نیاز های شما نیست در اینجا یک شرکت معتبر و پاسخگو در کنار مشتریان خود می باشد و تمام مسئولیت پشتیبانی بر عهده شرکت می باشد و نقطه قوت فوق العاده بالای برای یک وب سایت می باشد
فروش محصولات
فروش محصولات شما

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

هدایت کاربران به صفحه خاص بر حسب نقش کاربری آنها در وردپرس
امین صفرپور
امین صفرپور
Asset 1
1396-12-27
Asset 2

دانلود شده

0
Asset 1

نظرات

0
Asset 1

بازدید شده

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

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

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

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

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

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

در داخل دایرکتوری 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 هستیم و بنابراین کدهای هدایت شدن کاربر اجرا نمی‌شوند.

نتیجه گیری

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

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

ارسال پرسش و دیدگاه

0دیدگاه
مطالبی که شاید خوشتان بیاد
سلام! ما 271 محصول رایگان در بخش آموزش wordpress داریم اگر قصد بازدید دارید روی لینک سبز رنگ روبرو بزن بریم