کاربران وردپرس – بخش اول: معرفی توابع کاربری

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

در هنگام نصب وردپرس، یک کاربر به عنوان مدیر سایت (admin) ایجاد شده و توانایی نصب و اعمال تنظیمات لازم بر روی سایت را دارا می باشد.

توابع مربوط به کاربری

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

تابع is_user_logged_in

 این تابع امکان بررسی ورود به سایت (لاگین) کاربر فعلی را فراهم می آورد. با توجه به مقدار برگشتی این تابع که مقدار true یا false است، کسانی که وارد سایت شدند (مقدار برگشتی true) کاربران و کسانی که وارد نشدند (مقدار برگشتی false) مشخص کننده بازدیدکننده می باشد.

< ?php
             
add_action( 'wp_footer', 'bmpt_footer_user_logged_in' );
             
function bmpt_footer_user_logged_in() {
             
    if ( is_user_logged_in() ) 
        echo 'You are currently logged into this site.';             
    else
        echo 'You are not logged into the site.';
}
             
? >   

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

تابع get_users

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

blog_id: در شبکه ای متشکل از چند سایت استفاده می شود و مشخص کننده آیدی یک بلاگ است.

role: نام یک نقش کاربری

Meta_key: یک کلیدمتا از جدول usermeta

Meta_value: مقدار یک متا در جدول usermeta

Meta_compare: یک عملگر شرطی (<، <، = ، != و …) برای مقایسه مقدار متا

include: آرایه ای از آیدی کاربران مد نظر در شرط

exclude: آرایه ای از آیدی کاربرانی که باید مستثنی شوند

search: رشته ای که باید در فیلدهای نام نمایشی، نام کاربری و ایمیل کاربر در جدول کاربران جستجو شود

Orderby: فیلدی که مرتب سازی کاربران براساس آن انجام می پذیرد.

Order: تعیین نوع مرتب سازی. صعودی (ASC) نزولی (DESC)

Number: تعداد کاربرانی که اطلاعات آنها برگردانده می شود.

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

<?php

function bmpt_user_avatars( $role = 'subscriber' ) {
             
    /* Get the users based on role. */
    $users = get_users(
        array(
            'role' = >  $role
        )
    );
             
    /* Check if any users were returned. */
    if ( is_array( $users ) ) {
             
        /* Loop through each user. */
        foreach ( $users as $user ) {
             
            /* Display the user’s avatar. */
            echo get_avatar( $user );
        }
    }
}
             
? >    

در تابع فوق نوع نقش کاربری به عنوان ورودی دریافت می شوند و پس از دریافت اطلاعات کاربران دارای این نقش کاربری با کمک تابع get_users، آواتار کاربران توسط تابع get_avatar به نمایش در می آید.

تابع count_users

این تابع تعداد کل کاربران سایت و همچنین تعداد کاربران هر نقش کاربری را برمی گرداند. این تابع دو پارامتر ورودی اختیاری می پذیرد: پارامتر اول استراتژی محاسبه تعداد کاربران که می تواند براساس زمان یا حافظه باشد. پارامتر دوم آیدی وب سایتی که برای شمارش تعداد کاربران باید مد نظر قرار گیرد. مقدار برگشتی تابع آرایه ای شامل تعداد کل کاربران (کلید total_users) و آرایه ای شامل تعداد کاربران هر نقش است.

< ?php
             
/* Get the user counts. */
$user_count = count_users();
             
/* Open an unordered list. */
echo ' < ul class="user-counts" > ';
             
/* List the total number of users. */
echo ' < li > Total users: ' . $user_count['total_users'] . ' < /li > ';
             
/* Loop through each of the roles. */
foreach ( $user_count['avail_roles'] as $role = >  $count ) {
             
    /* List the role and its number of users. */
    echo ' < li > ' . $role . ': ' . $count . ' < /li > ';
}
             
/* Close the unordered list. */
echo ' < /ul > ';
             
? >

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

تابع wp_insert_user

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

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

User_pass: پسورد حساب کاربری جدید

User_login: نام کاربری کاربر جدید که باید یکتا باشد

User_nicename: نام جایگزین که در لینک ها از آن استفاده می شود. پیش فرض همان user_login است

User_url: آدرس وب سایت کاربر

User_email: آدرس ایمیل کاربر

Display_name: نام نمایشی کاربر

nickname: نام مستعار کاربر

First_name: نام کوچک کاربر

Last_name: نام خانوادگی کاربر

Description: اطلاعاتی در مورد کاربر

Rich_editing: آیا کاربر از ویرایشگر ویژوال هنگام نوشتن مطلب می تواند استفاده کند؟ مقدار پیش فرض true است

User_registered: تاریخ و زمان عضویت در سایت.

Role: نقش کاربری

Admin_color: رنگ تم در بخش مدیریت وردپرس

Comment_shortcuts: آیا کاربر در هنگام مدیریت کامنت ها می تواند از میانبرهای صفحه کلید استفاده کند؟

از میان آرگومان های فوق، مقداردهی user_login، user_pass و user_email ضروری است. این تابع در صورتی که کاربر جدید با موفقیت اضافه شود آیدی کاربر و در غیر این صورت خطا برمی گرداند.

/* Insert the new user on the ‘init’ hook. */
add_action( ‘init’, ‘bmpt_insert_user’ );
             
/* Inserts a new user. */
function bmpt_insert_user() {
             
    /* Do nothing if the ‘wrox’ username exists. */
    if ( username_exists( ‘wrox’ ) )
        return;
             
    /* Set up the user data. */
    $userdata = array(
        ‘user_login’ = >  ‘wrox’,
        ‘user_email’ = >  ‘wrox@example.com’,
        ‘user_pass’ = >  ‘123456789’,
        ‘user_url’ = >  ‘http://example.com’,
        ‘display_name’ = >  ‘Wrox’,
        ‘description’ = >  ‘Loves to publish awesome books on WordPress!’,
        ‘role’ = >  ‘editor’
    );
             
    /* Create the user. */
    $user = wp_insert_user( $userdata );
             
    /* If the user wasn’t created, display the error message. */
    if ( is_wp_error( $user ) )
        echo $result- > get_error_message();
}
             
? >     

در تابع مثال فوق ابتدا با کمک تابع username_exists وجود کاربری با نام کاربری wrox بررسی می شود. در ادامه با استفاده از تابع wp_insert_user کاربر جدید ایجاد می گردد. در شرط انتهای تابع فوق نیز در صورت بروز خطا، پیام خطا را نشان داده می شود.

تابع wp_create_user

این تابع عملکردی مشابه تابع wp_insert_user دارد و برای ایجاد حساب کاربری جدید استفاده می گردد با این تفاوت که نیازی به تنظیم اطلاعات جزیی کاربر نیست و با تعیین نام کاربری و پسورد کاربری جدید ایجاد می گردد. پارامتر اول این تابع نام کاربری، پارامتر دوم پسورد و پارامتر سوم که اختیاری است ایمیل کاربر است. در صورت ایجاد موفقیت آمیز حساب کاربری، آیدی کاربر و در غیر این صورت خطا برگردانده می شود.

/* Create the new user on the ‘init’ hook. */
add_action( ‘init’, ‘bmpt_create_user’ );
             
/* Creates a new user. */
function bmpt_create_user() {
             
    /* Do nothing if the ‘wrox2’ username exists. */
    if ( username_exists( ‘wrox2’ ) )
        return;
             
    /* Create the ‘wrox2’ user. */
    wp_create_user(
        ‘wrox2’,
        ‘123456789’,
        ‘wrox2@example.com’
    );
}
             
? >     

تابع wp_update_user

از این تابع برای بروزرسانی اطلاعات کاربری استفاده می شود و تمامی آرگومان های پارامتر ورودی آن مشابه تابع wp_insert_user است. برای بروزرسانی اطلاعات لازم است مقدار آرگومان ID کاربر حتما مقداردهی شود در غیر این صورت کاربر جدیدی ایجاد می گردد.

/* Only load change the color scheme in the admin. */
add_action( ‘admin_init’, ‘bmpt_force_admin_color’ );
             
/* Forces the current user to use the ‘fresh’ admin color. */
function bmpt_force_admin_color() {
             
    /* Get the current user object. */
    $user = wp_get_current_user();
             
    /* If the $user variable is not empty, continue. */
    if ( !empty( $user ) ) {
             
        /* Get the user’s admin color scheme. */
        $admin_color = get_user_meta( $user- > ID, ‘admin_color’, true );
             
        /* If the admin color is not ‘fresh’, change it. */
        if ( $admin_color !== ‘fresh’ ) {
             
            /* Set up the user data. */
            $userdata = array(
                ‘ID’ = >  $user- > ID,
                ‘admin_color’ = >  ‘fresh’
            );
             
            /* Update the user. */
            wp_update_user( $userdata );
        }
    }
}
             
? > 

 در مثال فوق، تنظیمات رنگ بخش مدیریت وردپرس برای کاربر فعلی بروزرسانی می شود. تابع wp_get_current_user اطلاعات کاربر فعلی را بر می گرداند. تابع get_user_meta مقدار متادیتا ذخیره شده برای یک کلیدمتا مرتبط با یک کاربر را برمی گرداند.

تابع wp_delete_user

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

< ?php
             
/* Delete user 100 and assign posts to user 1. */
wp_delete_user( 100, 1 );
             
? >  

تابع get_userdata

این تابع برای دریافت اطلاعات یک کاربر براساس آیدی او استفاده می گردد. در صورت وجود کاربر مورد نظر اطلاعات به صورت شی و در غیر این صورت مقدار false برگردانده می شود.

< ?php
function bmpt_display_user_website( $user_id ) {
             
    /* Get the user data. */
    $data = get_userdata( $user_id );
             
    /* Check if data was returned. */
    if ( !empty( $data ) ) {
             
        /* Check if a URL has been given. */
        if ( !empty( $data- > user_url ) ) {
             
            /* Display the user display name and URL. */
            echo $data- > display_name . ‘: ‘ . $data- > user_url;
        }
}
             
? >   

در تابع فوق، در صورت وجود کاربر، نام نمایشی و آدرس وب سایت او نمایش داده می شود. همان طور که در این مثال مشخص است دسترسی به اطلاعات کاربر به صورت property شی برگشتی تابع get_userdata امکان پذیر است.

تابع wp_get_current_user

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

<?php
             
/* Display user welcome message in the admin footer. */
add_action( ‘in_admin_footer’, ‘bmpt_user_welcome_message’ );
             
function bmpt_user_welcome_message() {
             
    /* Get the current user’s data. */
    $data = wp_get_current_user();
             
    /* Display a message for the user. */
    echo “Hello, {$data- > display_name}. < br / > ”;
}
             
? >

کد فوق نام نمایشی کاربر را در فوتر مدیریت وردپرس نمایش می دهد.

تابع count_user_posts

این تابع تعداد پست های نوشته شده توسط کاربر را بر می گرداند. این تابع سه پارامتر ورودی می پذیرد که تنها پارامتر اول اجباری است. پارامتر اول آیدی کاربر، پارامتر دوم انواع پست مورد نظر که می تواند به صورت رشته یا آرایه ای از انواع پست باشد و پارامتر سوم که مقدار بولین برای تعیین شمارش پست های منتشر شده در سایت است.

<?php 
printf( __( 'Number of posts published by user: %s', 'textdomain' ),  count_user_posts( 5 , "book"  ) );
 ?>

در مثال فوق تعداد مطالب از نوع book که توسط کاربر با آیدی 5 نوشته شده به نمایش در می آید.

پست های مرتبط

Leave a Comment