SHET26

نمایش تصادفی کاربران وردپرس در قالب سایت با روش امن

نمایش تصادفی کاربران وردپرس در قالب سایت با روش امن

اگه دوست دارید اعضا، نویسنده‌ها یا همکارهای سایتتون بیشتر دیده بشن، می‌تونید هر بار چند نفر از اون‌ها رو به‌شکل تصادفی نشون بدید. با هر بار بارگذاری صفحه، ترتیب افراد تغییر می‌کنه و بازدیدکننده نام نمایشی، تصویر و در صورت نیاز لینک هر شخص رو می‌بینه.

توی این آموزش سراغ افزونه رایگان Code Snippets می‌ریم تا مجبور نباشید فایل functions.php قالب رو مستقیم تغییر بدید. بعد یک شورت‌کد می‌سازیم و اون رو داخل نوشته، برگه، سایدبار یا بخش‌های مختلف قالب می‌ذاریم. کدی که می‌سازیم از توابع خود وردپرس کمک می‌گیره، خروجی‌ها رو امن می‌کنه و دستتون رو برای انتخاب تعداد و نقش کاربران باز می‌ذاره.

چرا کاربران سایت رو به‌صورت تصادفی نمایش بدیم؟

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

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

آیا وردپرس این قابلیت رو بدون افزونه داره؟

وردپرس به‌صورت پیش‌فرض بلوک آماده‌ای برای نمایش تصادفی کاربران نداره. بااین‌حال، ابزارهای اصلی این کار مثل دریافت کاربران، ساخت شورت‌کد و بلوک «کد کوتاه» داخل خود وردپرس هستن. شورت‌کد یک عبارت کوتاه مثل [random_users] هست که وردپرس اون رو به خروجی واقعی تبدیل می‌کنه.

برای ثبت این شورت‌کد باید یک قطعه کد PHP به سایت اضافه کنید. می‌تونید کد رو داخل یک افزونه اختصاصی یا قالب فرزند بذارید، ولی اگه تازه‌کار هستید، نسخه رایگان Code Snippets راه ساده‌تری جلوی پاتون می‌ذاره. این روش به قالب اصلی وابسته نیست و با به‌روزرسانی قالب هم پاک نمی‌شه.

نصب افزونه رایگان Code Snippets

اول وارد پیشخوان وردپرس بشید. از منوی «افزونه‌ها» روی «افزودن افزونه تازه» بزنید و عبارت Code Snippets رو جست‌وجو کنید. افزونه‌ای با همین نام رو نصب و بعد فعال کنید. نسخه رایگان افزونه برای اجرای کد PHP این آموزش کافیه و نیازی به خرید نسخه پولی ندارید.

افزونه رایگان Code Snippets
افزونه رایگان Code Snippets

اضافه کردن کد نمایش تصادفی کاربران

بعد از فعال‌سازی افزونه، از منوی «قطعه کدها» به بخش افزودن کد تازه برید. یک عنوان مشخص مثل «نمایش تصادفی کاربران» بنویسید و نوع قطعه کد رو روی PHP بذارید.

صفحه ساخت قطعه کد PHP برای نمایش تصادفی کاربران
صفحه ساخت قطعه کد PHP برای نمایش تصادفی کاربران

حالا کد زیر رو کامل داخل ویرایشگر افزونه بذارید. تگ آغازین <?php رو ننویسید، چون افزونه خودش این قطعه رو به‌عنوان کد PHP اجرا می‌کنه.

function mihanwp_random_users_shortcode( $atts ) {
    $atts = shortcode_atts(
        array(
            'count' => 5,
            'roles' => 'author,editor',
        ),
        $atts,
        'random_users'
    );

    $count = max( 1, min( 20, absint( $atts['count'] ) ) );

    $allowed_roles = array( 'subscriber', 'contributor', 'author', 'editor' );
    $requested_roles = array_filter(
        array_map( 'sanitize_key', explode( ',', $atts['roles']'] ) )
    );
    $roles = array_values( array_intersect( $requested_roles, $allowed_roles ) );

    if ( empty( $roles ) ) {
        return '';
    }

    $users = get_users(
        array(
            'role__in' => $roles,
            'number'   => 50,
            'orderby'  => 'registered',
            'order'    => 'DESC',
        )
    );

    if ( empty( $users ) ) {
        return '';
    }

    shuffle( $users );
    $users = array_slice( $users, 0, $count );

    $output = '<ul class="mihanwp-random-users">';

    foreach ( $users as $user ) {
        $name       = $user->display_name;
        $profile_url = get_author_posts_url( $user->ID );

        $output .= '<li>';
        $output .= get_avatar( $user->ID, 48, '', $name );
        $output .= '<a href="' . esc_url( $profile_url ) . '">';
        $output .= esc_html( $name );
        $output .= '</a>';
        $output .= '</li>';
    }

    $output .= '</ul>';

    return $output;
}

add_shortcode( 'random_users', 'mihanwp_random_users_shortcode' );

این کد به‌طور پیش‌فرض حداکثر پنج کاربر با نقش نویسنده یا ویرایشگر رو انتخاب می‌کنه. تابع get_users() اطلاعات کاربران رو از مسیر استاندارد وردپرس می‌گیره، shuffle() ترتیبشون رو به‌هم می‌زنه و توابع esc_html() و esc_url() نام و لینک خروجی رو امن می‌کنن.

در آخر، گزینه اجرای قطعه کد در همه جای سایت رو انتخاب کنید و روی «ذخیره تغییرات و فعال‌سازی» بزنید. اگه افزونه خطای PHP نشون داد، کد رو فعال نکنید و یک بار دیگه بررسی کنید که همه خطوط رو درست و کامل کپی کرده باشید.

فهرست قطعه کدها و وضعیت فعال بودن کد نمایش کاربران
فهرست قطعه کدها و وضعیت فعال بودن کد نمایش کاربران

تصویر زیر مسیر قدیمی ویرایش مستقیم فایل قالب رو نشون می‌ده. بهتره سراغ این روش نرید، چون حتی یک اشتباه کوچیک توی functions.php ممکنه سایت رو از دسترس خارج کنه. ضمن اینکه با به‌روزرسانی قالب اصلی، تغییراتتون هم ممکنه از بین برن.

افزودن کد به فایل functions.php
افزودن کد به فایل functions.php

قرار دادن فهرست کاربران در برگه یا نوشته

نوشته یا برگه دلخواهتون رو با ویرایشگر بلوکی باز کنید. روی دکمه افزودن بلوک بزنید، بلوک «کد کوتاه» رو پیدا کنید و عبارت زیر رو داخلش بنویسید:

[random_users]

حالا نوشته یا برگه رو به‌روزرسانی کنید و نتیجه رو در بخش عمومی سایت ببینید. گاهی پیش‌نمایش داخل ویرایشگر، خروجی نهایی شورت‌کد رو نشون نمی‌ده؛ برای همین حتماً صفحه منتشرشده رو هم باز کنید.

نمایش کاربران در قالب بلوکی وردپرس

اگه توی منوی «نمایش» گزینه «ویرایشگر» رو می‌بینید، به‌احتمال زیاد قالبتون بلوکیه. وارد «نمایش ← ویرایشگر» بشید و قالب یا بخش قالب موردنظرتون، مثل فوتر یا سایدبار، رو باز کنید. بعد بلوک «کد کوتاه» رو اضافه کنید و [random_users] رو داخلش بذارید.

نمایش کاربران در قالب بلوکی وردپرس
نمایش کاربران در قالب بلوکی وردپرس

ویرایشگر سایت یکی از امکانات خود وردپرس برای مدیریت قالب‌های بلوکیه. پس لازم نیست فایل‌های Footer.php یا Sidebar.php رو دست‌کاری کنید. اگه گزینه ویرایشگر رو نمی‌بینید، احتمالاً از یک قالب کلاسیک استفاده می‌کنید.

نمایش کاربران در قالب کلاسیک

توی قالب‌های کلاسیک، اول از مسیر «نمایش ← ابزارک‌ها» ببینید محل موردنظرتون ناحیه ابزارک داره یا نه. اگه داشت، یک بلوک «کد کوتاه» به سایدبار یا فوتر اضافه کنید، [random_users] رو داخلش بذارید و تغییرات رو ذخیره کنید.

اضافه کردن شورت‌کد نمایش کاربران به ناحیه ابزارک قالب کلاسیک
اضافه کردن شورت‌کد نمایش کاربران به ناحیه ابزارک قالب کلاسیک

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

تغییر تعداد و نقش کاربران

اگه می‌خواید سه نفر نمایش داده بشن، ویژگی count رو به شورت‌کد اضافه کنید:

[random_users count="3"]

برای اینکه خروجی بیش‌ازحد سنگین نشه، کد عددهای بالاتر از ۲۰ رو به ۲۰ محدود می‌کنه. برای نمایش مشارکت‌کننده‌ها و نویسنده‌ها هم می‌تونید نقش‌ها رو به این شکل مشخص کنید:

[random_users count="5" roles="contributor,author"]

نام نقش‌ها باید به انگلیسی نوشته بشه. این کد مقدارهای subscriber، contributor، author و editor رو قبول می‌کنه. نقش مدیر عمداً بین گزینه‌ها نیست تا حساب‌های مدیریتی در فهرست عمومی سایت دیده نشن.

نکات حریم خصوصی و امنیت

  • قبل از اینکه اعضای عادی یا مشتری‌ها رو نمایش بدید، رضایت روشن اون‌ها رو بگیرید. صرف داشتن حساب کاربری به این معنی نیست که شخص با انتشار عمومی نام و تصویرش موافقه.
  • فقط از نام نمایشی استفاده کنید و نام ورود، ایمیل یا اطلاعات خصوصی کاربر رو توی خروجی نذارید.
  • تصویر پیش‌فرض وردپرس ممکنه از سرویس Gravatar دریافت بشه. اگه سیاست حریم خصوصی سایتتون ارتباط با این سرویس رو مجاز نمی‌دونه، بخش get_avatar() رو از کد بردارید یا از یک راهکار آواتار محلی کمک بگیرید.
  • قبل از اضافه کردن هر قطعه کد، از سایت نسخه پشتیبان بگیرید و اول کد رو روی یک سایت آزمایشی امتحان کنید.

رفع خطاهای رایج

خود عبارت شورت‌کد نمایش داده می‌شه

این اتفاق معمولاً یعنی قطعه کد فعال نیست یا شورت‌کد رو داخل بلوک «کد» گذاشتید. وضعیت کد رو در بخش «قطعه کدها» بررسی کنید و برای دیدن خروجی، حتماً از بلوک «کد کوتاه» کمک بگیرید.

هیچ کاربری نمایش داده نمی‌شه

مطمئن بشید سایتتون حداقل یک کاربر با نقش نویسنده، ویرایشگر یا یکی از نقش‌هایی داره که توی شورت‌کد نوشتید. حساب مدیر به‌طور پیش‌فرض در این فهرست دیده نمی‌شه.

همیشه چند کاربر مشابه دیده می‌شن

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

منابع رسمی

جمع‌بندی

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

سؤال‌های متداول

آیا برای نمایش تصادفی کاربران حتماً به افزونه نیاز داریم؟

خود وردپرس ابزارهای لازم برای ساخت شورت‌کد و دریافت کاربران رو داره، ولی بلوک آماده‌ای برای این کار نداره. افزونه رایگان Code Snippets فقط کمک می‌کنه کد رو بدون دست‌کاری مستقیم فایل‌های قالب اضافه و مدیریت کنید.

چطور تعداد کاربران نمایش‌داده‌شده رو تغییر بدیم؟

کافیه ویژگی count رو به شورت‌کد اضافه کنید. برای نمونه، شورت‌کد [random_users count="3"] سه کاربر رو نشون می‌ده. کد این آموزش تعداد خروجی رو به حداکثر ۲۰ نفر محدود می‌کنه.

می‌تونیم فقط کاربران یک نقش مشخص رو نمایش بدیم؟

بله. با ویژگی roles می‌تونید نقش‌های مجاز رو مشخص کنید. نام نقش‌ها باید به انگلیسی نوشته بشه و این کد نقش‌های subscriber، contributor، author و editor رو قبول می‌کنه.

چرا مدیران سایت در فهرست دیده نمی‌شن؟

نقش مدیر عمداً از نقش‌های مجاز کد کنار گذاشته شده تا حساب‌های مدیریتی در فهرست عمومی سایت نمایش داده نشن. بهتره برای حفظ امنیت همین محدودیت رو نگه دارید.

چرا با تازه‌کردن صفحه، کاربران تغییر نمی‌کنن؟

احتمالاً کش سایت یا سرور نسخه ذخیره‌شده صفحه رو نشون می‌ده. کش رو پاک کنید و دوباره صفحه رو ببینید. اگه کش فعاله، فهرست بعد از تازه‌سازی نسخه ذخیره‌شده تغییر می‌کنه.

نمایش نام و تصویر کاربران از نظر حریم خصوصی مشکلی داره؟

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

نظر شما در این مورد چیه؟

  1. کاربر مهمان۲۷ خرداد ۱۳۹۶

    سلام
    این کد کار نمیکنه !
    متاسفانه !

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسآنلاین و پاسخگوی شما هستیم.آنلاین

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.