شاید شما هم بخواهید از سیستم وردپرس به عنوان یک مدیریت کاربر قوی استفاده کنید. در این آموزش قصد داریم نحوه بلاک کردن یک کاربر را به شما آموزش دهیم.
مرحله اول: ایجاد افزونه
در ابتدا شما باید پوشه ای جدید در “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"><input name="rc_ban" type="checkbox" id="rc_ban" /> </label></td> </tr> </table> <?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->ID; if ( $current_user_id == $user_id ) { return; } // Lock if( isset( $_POST['rc_ban'] ) && $_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 ); }
در نهایت ما عکسی مانند تصویر زیر خواهیم داشت
جلوگیری از ورود کاربران بلاک شده
برای انجام این کار ما نیاز به استفاده از فیلتر پیش فرض وردپرس به اسم “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->ID, false ); if ( $banned ) { return new WP_Error( 'rc_banned', __('<strong>ERROR</strong>: This user account is disabled.', 'rc') ); } return $user; } add_filter( 'wp_authenticate_user', 'rc_authenticate_user', 1 );
اهان یعنی ما تمام کد هارو داخل همون فایل پی اچ پی قرار بدیم ؟ امکانش هست خروجی پایانی رو برا دانلود بزارید؟
افزونه ای باشه که بشه تمامی کامنت های یک فرد رو پاک کرد. حتی اگه اون فرد عضو نشده باشه یعنی مهمان باشه. (از روی ایمیل یا نام کاربری پاک کنه)
و یا افزونه تایید کردن نظرات یک فرد یا ایمیل خاص
دانلود افزونه هم قرار داده شد.
سلام کد هارو تو فایل فانکشن قرار بدیم؟؟؟؟
لطفا یک افزونه هم برای مدیریت کامل نظرات بزارید ممنون
سلام
خیر
در این آموزش به شما نحوه نوشتن یک افزونه (پلاگین) آموزش داده شده است که مانند دیگر افزونه ها تنها کافیست از قسمت افزونه ها در وردپرس آن را فعال کنید.
مدیریت کامل نظرات دقیقاً شامل چی باید باشه ؟
خیلی خوب و کاربردی هست ممنون بابت این آموزش 😀
خواهش می کنم دوست عزیز