آموزش بلاک کردن کاربران در وردپرس

نویسنده :
تعداد بازدید :3,814

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

مرحله اول: ایجاد افزونه

در ابتدا شما باید پوشه ای جدید در “wp-content/plugins” ایجاد کنید و اسم آن را “ban-users” قرار دهید و داخل این پوشه فایلی به اسم “ban-users.php” درست کرده و آن را با یک ویرایشگر کد باز کنید و کدهای زیر را در آن قرار داده:

/*
Plugin Name: Ban Users
Plugin URI: http://www.remicorson.com
Description: Allows you to ban users
Author: Remi Corson
Version: 1.0
Author URI: http://www.remicorson.com
*/

اضافه کردن یک چک باکس در صفحه پروفایل کاربری

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

کد زیر را دنبال کنید:


/**
 * Admin init
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_admin_init(){

 // Edit user profile
 add_action( 'edit_user_profile', 'rc_edit_user_profile' );
 add_action( 'edit_user_profile_update', 'rc_edit_user_profile_update' );

}
add_action('admin_init', 'rc_admin_init' );

کد بالا، تابعی را که ما هم اکنون ایجاد می کنیم را فراخوانی می کند. این تابع چک باکس را به صفحه پروفایل کاربری اضافه می کند.


/**
 * Adds custom checkbox to user edition page
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_edit_user_profile() {
 if ( !current_user_can( 'edit_users' ) ) {
 return;
 }

 global $user_id;

 // User cannot disable itself
 $current_user = wp_get_current_user();
 $current_user_id = $current_user->ID;
 if ( $current_user_id == $user_id ) {
 return;
 }
 ?>
 <h3></h3>
 <table class="form-table">
 <tr>
 <th scope="row"></th>
 <td><label for="rc_ban">&lt;input name=&quot;rc_ban&quot; type=&quot;checkbox&quot; id=&quot;rc_ban&quot; /&gt; </label></td>
 </tr>
 </table>
 &lt;?php
}

اکنون باید کاری کنیم که مقدار چک باکس در دیتابیس ذخیره شود:


/**
 * Save custom checkbox
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_edit_user_profile_update() {

 if ( !current_user_can( 'edit_users' ) ) {
 return;
 }

 global $user_id;

 // User cannot disable itself
 $current_user = wp_get_current_user();
 $current_user_id = $current_user-&gt;ID;
 if ( $current_user_id == $user_id ) {
 return;
 }

 // Lock
 if( isset( $_POST['rc_ban'] ) &amp;&amp; $_POST['rc_ban'] = 'on' ) {
 rc_ban_user( $user_id );
 } else { // Unlock
 rc_unban_user( $user_id );
 }

}

در ادامه باید دو تابع rc_ban_users و rc_unban_users را ایجاد کنیم که نام آنها گویای کاربرد آنها است. اولین تابع مقدار چک باکس را در دیتابیس ذخیره می کند و در حقیقت، کاربر را بلاک می کند و تابع دوم کاربر را از بلاک خارج می کند.

بلاک کردن کاربران

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


/**
 * Ban user
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_ban_user( $user_id ) {

 $old_status = rc_is_user_banned( $user_id );

 // Update status
 if ( !$old_status ) {
 update_user_option( $user_id, 'rc_banned', true, false );
 }
}

خارج کردن کاربران از بلاک

با استفاده از این تابع می توانیم یک کاربر را از بلاک خارج کنیم:


/**
 * Un-ban user
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_unban_user( $user_id ) {

$old_status = rc_is_user_banned( $user_id );

 // Update status
 if ( $old_status ) {
 update_user_option( $user_id, 'rc_banned', false, false );
 }
}

آیا کاربر بلاک است ؟

ما در دو تابع بالا، دیدیم که تابعی به اسم rc_is_user_banned داشتیم که کار این تابع این است که بررسی کند که کاربر مورد نظر بلاک است یا نه:


/**
 * Checks if a user is already banned
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_is_user_banned( $user_id ) {
 return get_user_option( 'rc_banned', $user_id, false );
}

در نهایت ما عکسی مانند تصویر زیر خواهیم داشت

ban_users_1

جلوگیری از ورود کاربران بلاک شده

برای انجام این کار ما نیاز به استفاده از فیلتر پیش فرض وردپرس به اسم “wp_authenticate_user” داریم. با کمک این فیلتر ما تابع rc_authenticate_user را فراخوانی می کنیم.


/**
 * Check if user is locked while login process
 *
 * @access public
 * @since 1.0
 * @return void
*/
function rc_authenticate_user( $user ) {

if ( is_wp_error( $user ) ) {
 return $user;
 }

 // Return error if user account is banned
 $banned = get_user_option( 'rc_banned', $user-&gt;ID, false );
 if ( $banned ) {
 return new WP_Error( 'rc_banned', __('<strong>ERROR</strong>: This user account is disabled.', 'rc') );
 }

 return $user;
}

&nbsp;

add_filter( 'wp_authenticate_user', 'rc_authenticate_user', 1 );

دانلود این افزونه


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

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

    افزونه ای باشه که بشه تمامی کامنت های یک فرد رو پاک کرد. حتی اگه اون فرد عضو نشده باشه یعنی مهمان باشه. (از روی ایمیل یا نام کاربری پاک کنه)
    و یا افزونه تایید کردن نظرات یک فرد یا ایمیل خاص

    1. مسعود
      پاسخ توسط مسعود :

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

ارسال نظر

کانال را در گوگل محبوب کنید