سایر بخش های سری آموزشی " ایجاد افزونه وردپرس "

نقش ها و قابلیت ها دو ویژگی مهم بوده که به شما این امکان را می دهد تا کاربران را در وردپرس به صورت بهتری مدیریت کنید. در اینجا نقش همان چیزی است که کاربر با آن شناخته می شود (مدیر، نویسنده و…) و منظور از قابلیت ها همان مجوزهای انجام برخی کارها می باشد.

نقش چیست؟

نقش همان قدرتی است که به کاربر تعلق می گیرد و با استفاده از آن می تواند به قسمت های مختلف داشبورد وردپرس دسترسی داشته باشد. در حالت پیشفرض وردپرس از پنج نوع نقش استفاده می کند:

  1. مدیرکل
  2. ویرایشگر
  3. نویسنده
  4. مشارکت کننده
  5. مشترک

اما می توان نقش های بیشتری را هم ایجاد و اضافه کرد. این کار به شما اجازه می دهد تا بتوانید کنترل بهتری بر روی اعضای سایت خود داشته باشید. برای تغییر نقش کاربران می توانید به قسمت کاربران مراجعه کنید.

ایجاد نقش های جدید

اگر نقش های موجود برای کارهایی که مد نظر دارید، کافی نبوده و می خواهید نقش هایی جدید با قابلیت های متفاوت به سایت‌تان اضافه کنید می توانید از کدهای زیر استفاده کنید:

function add_simple_role() {
    add_role( 'simple_role', 'Simple Role', array(
            'read' => true,
            'edit_posts' => true,
            'upload_files' => true,
            ) );
}
//Adds the simple role
add_action('init', 'add_simple_role');

اکنون شما اولین نقش جدید سفارشی خود را در وردپرس ایجاد کردید! و می توانید از این نقش جدید برای کاربران استفاده کنید.

ویرایش قابلیت ها

قابلیت ها به نقش های کاربری مشخص می کند که برای انجام چه کاری (ویرایش نوشته، انتشار نوشته، و…) مجوزهای لازم را دارد. برای مثال کدهای زیر قابلیتی را به نقش مشارکت کننده اضافه می کنند:

function add_theme_caps() {
    // gets the author role
    $role = get_role( 'contributor' );
 
    // This only works, because it accesses the class instance.
    // would allow the author to edit others' posts for current theme only
    $role->add_cap( 'edit_others_posts' );
}
add_action( 'admin_init', 'add_theme_caps');

این کدها به نقش مشارکت کننده این امکان را فراهم می سازد تا نوشته های سایر افراد را ویرایش کند. و البته که کاملا واضح است که شما می توانید قابلیت های مورد نیاز خود را به جای آن اضافه کنید!

استفاده از قابلیت ها

وردپرس از دو تابع اصلی current_user_can و user_can برای بررسی قابلیت ها استفاده می کند.

current_user_can

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


در اینجا متغییر args اطلاعات بیشتر را شامل می شود. برای مثال شما می خواهید که قابلیت ویرایش نوشته ها را به نقشی اضافه کنید ولی برای تست با استفاده از متغییر args مشخص می کنید که تنها برای یک نوشته این امکان اضافه شود.

اگر بخواهید یک مثال کامل برای این موضوع بنویسیم (یعنی کاربر بتواند نوشته را ویرایش کند) می توان از کد زیر استفاده کرد:

if ( is_user_logged_in() && current_user_can('edit_posts') ) {
  edit_post_link('Edit', '

‘, ‘

‘); }

این کد با استفاده از دستور شرطی بررسی می کند که کاربر وارد شده است یا نه و اگر وارد شده بود آیا مجوز ویرایش نوشته ها را دارید یا خیر؛ اگر دستورات شرطی با موفقیت همراه بود در سایت لینک ویرایش نوشته ها به کاربر نشان داده خواهد شد.

user_can

این تابع قابلیت هایی که یک کاربر دارد را بررسی می کند و برای این بررسی از شناسه کاربری استفاده می شود که در تابع قبلی مورد استفاده قرار نمی گرفت. به کدهای زیر نگاه کنید:


این تابع در مقایسه با current_user_can محدودتر عمل کرده و متغییری مانند args وجود ندارد که بتوان ویژگی های بیشتری را استفاده کرد.

وردپرس شبکه

برای آنهایی که از وردپرس شبکه استفاده می کنند، تابع مخصوص به نام  current_user_can_for_blog وجود دارد که همانند current_user_can کار می کند، البته با این تفاوت که به blog_id نیاز داشته و همچنین نمی توان از آرگمان ها در آن استفاده کرد. برای مثال کد زیر جهت بررسی قابلیت هایی که کاربر دارد مورد استفاده قرار می گیرد: