ﻢﯿﻨﮐ ﻉﻮﻨﻤﻣ ﺍﺭ ﺱﺮﭘﺩﺭﻭ ﺮﺑﺭﺎﮐ ﮏﯾ ﻪﻧﻮﮕﭼ


.ﺩﺍﺩ ﻢﯿﻫﺍﻮﺧ ﺶﺷﻮﭘ ﺍﺭ ﺮﮕﯾﺩ ﯽﻟﺎﻋ ﺩﺭﺍﻮﻣ ﯽﺧﺮﺑ ﻭ ﻥﺍﺮﺑﺭﺎﮐ ﯼﺎﻫ ﻥﻮﺘﺳ ﺖﯾﺮﯾﺪﻣ ،ﺕﺎﻣﺍﺪﻗﺍ ،ﺱ

ﺪﯿﻨﮐ ﺩﺎﺠﯾﺍ ﺍﺭ ﻪﻧﻭﺰﻓﺍ :1 ﻪﻠﺣﺮﻣ

:ﺪﯿﻧﺎﺒﺴﭽﺑ ﺍﺭ ﺪﮐ ﻦﯾﺍ ﻭ ﺪﯿﻨﮐ ﺯﺎﺑ ﺍﺭ ﻥﺁ ،ﺪﯿﻨﮐ ﺩﺎﺠﯾﺍ ”ban-users.php“ ﻡﺎﻧ ﻪﺑ ﺪﯾﺪﺟ ﻞ

<?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
*/

ﺪﯿﻨﮐ ﻪﻓﺎﺿﺍ ﻥﺍﺮﺑﺭﺎﮐ ﻪﯾﺎﻤﻧ ﻪﺤﻔﺻ ﺭﺩ ﺲﮐﺎﺑ ﮏﭼ ﮏﯾ :2 ﻪﻠﺣﺮﻣ

.ﺩﺭﺍﺪﻧ ﺍﺭ ﺎﻤﺷ ﺖﯾﺎﺳ ﺏﻭ ﻪﺑ ﺩﻭﺭﻭ ﻩﺯﺎﺟﺍ ﺮﮕﯾﺩ ﺮﺑﺭﺎﮐ ﺪﻫﺩ ﯽﻣ ﻥﺎﺸﻧ ﻪﮐ ﺩﻮﺷ ﯽﻣ ﻩﺮﯿﺧﺫ ﺮﺑﺭ

:ﺪﮐ ﻢﻫ ﻦﯾﺍ

/**
 * 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;
	}

	// Check if enabled
	$checked = checked( get_user_option( 'rc_banned', $user_id, false ) );

	// Display checkbox
	echo '<table class="form-table">
	<tr>
		<th scope="row">Ban User</th>
		<td>
		<label for="rc_ban">
			<input name="rc_ban" type="checkbox" id="rc_ban" '. $checked .' />Ban this user</label>
		</td>
	</tr>
	</table>';
}

:ﺪﻨﮐ ﯽﻣ ﻩﺮﯿﺧﺫ ﻩﺩﺍﺩ ﻩﺎﮕﯾﺎﭘ ﺭﺩ ﺍﺭ ﺲﮐﺎﺑ ﮏﭼ ﺭﺍﺪﻘﻣ ﻪﮐ ﻢﯿﺷﺎﺑ ﻪﺘﺷﺍﺩ ﺍﺭ ﯽﻌﺑﺎﺗ ﺪﯾﺎﺑ ﻥﻮﻨ

/**
 * 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 );
	}
	
}

.ﺪﻨﮐ ﯽﻣ ﺯﺎﺑ ﺍﺭ ﻥﺍﺮﺑﺭﺎﮐ ﯽﻣﻭﺩ ،ﺖﺳﺍ ﻉﻮﻨﻤﻣ ﺮﺑﺭﺎﮐ ﮏﯾ ﻪﮐ ﺪﻨﮐ ﯽﻣ ﻩﺮﯿﺧﺫ ﻩﺩﺍﺩ ﻩﺎﮕﯾﺎﭘ ﺭﺩ

ﻥﺍﺮﺑﺭﺎﮐ ﻥﺩﺮﮐ ﻉﻮﻨﻤﻣ :3 ﻪﻠﺣﺮﻣ

:()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 );
	}
}

ﻥﺍﺮﺑﺭﺎﮐ ﺖﯿﻋﻮﻨﻤﻣ ﻮﻐﻟ :4 ﻪﻠﺣﺮﻣ

:ﻢﯿﻫﺪﺑ ﺍﺭ "un-ban" ﺖﯿﻠﺑﺎﻗ ﻥﺍﺮﺑﺭﺎﮐ ﻪﺑ ﺪﯾﺎﺑ :ﻢﯾﺩﺮﮐ ﺩﺎﺠﯾﺍ ﺎﻣ ﻪﮐ ﺖﺳﺍ ﯼﺩﺮﮑﻠﻤﻋ ﺲﮑﻋﺮﺑ

/**
 * 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 );
	}
}

؟ﺖﺳﺍ ﻉﻮﻨﻤﻣ ﺮﺑﺭﺎﮐ ﺎﯾﺁ :5 ﻪﻠﺣﺮﻣ

:ﻢﯿﻨﮐ ﺩﺎﺠﯾﺍ ﺍﺭ ﻥﺁ ﺪﯿﯾﺎﯿﺑ .ﻢﯿﻨﮐ ﯽﻣ ﻩﺩﺎﻔﺘﺳﺍ ،ﺮﯿﺧ ﺎﯾ ﺖﺳﺍ ﻩﺪﺷ ﻉﻮﻨﻤﻣ ﺮﺑﺭﺎﮐ ﮏﯾ ﺎﯾﺁ ﻪ

/**
 * 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 );
}

.ﺪﻧﺍﺩﺮﮔ ﯽﻣﺮﺑ ﺍﺭ()rc_ban_users ﺭﺩ ﻩﺪﺷ ﻩﺮﯿﺧﺫ ﻪﻨﯾﺰﮔ ﺭﺍﺪﻘﻣ ﯽﮔﺩﺎﺳ ﻪﺑ ﻊﺑﺎﺗ ﻦﯾﺍ ،ﺎًﺳﺎ

:ﺪﺷﺎﺑ ﻥﺁ ﺪﻨﻧﺎﻣ ﺪﯾﺎﺑ ﻪﮐ ﻢﯾﺭﺍﺩ ﺮﺑﺭﺎﮐ ﺶﯾﺍﺮﯾﻭ ﻪﺤﻔﺻ ﺭﺩ ﺪﯾﺪﺟ ﺲﮐﺎﺑ ﮏﭼ ﮏﯾ ﺎﻣ ﺮﺿﺎﺣ ﻝﺎﺣ

.ﺩﻮﺷ ﯼﺮﯿﮔﻮﻠﺟ ﻩﺪﺷ ﻉﻮﻨﻤﻣ ﻥﺍﺮﺑﺭﺎﮐ ﺩﻭﺭﻭ ﺯﺍ ﺎﺗ ﺪﯿﻨﮐ ﺏﻼﻗ ﺩﻭﺭﻭ ﻡﺮﻓ ﻪﺑ ﺍﺭ ﻊﺑﺎﺗ ﮏﯾ ﻪﮐ ﺖ

ﺪﯿﻨﮐ ﯼﺭﺍﺩﺩﻮﺧ ﻪﻋﻮﻨﻤﻣ ﻥﺍﺮﺑﺭﺎﮐ ﺩﻭﺭﻭ ﺯﺍ :5 ﻪﻠﺣﺮﻣ

.ﺪﻨﮐ ﯽﻣ ﻩﺩﺎﻔﺘﺳﺍ WP_Error ﺱﻼﮐ ﺯﺍ ﻊﺑﺎﺗ ﻦﯾﺍ .ﻢﯿﻨﮐﯽﻣ ﻞﺼﺘﻣ ﺮﺘﻠﯿﻓ ﻦﯾﺍ ﻪﺑ ﺍﺭ «()

/**
 * 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 );

.ﻢﯾﺩﺮﮐ ﻞﺼﺘﻣ «wp_authenticate_user» ﺮﺘﻠﯿﻓ ﻪﺑ WP_Error ﺱﺮﭘﺩﺭﻭ ﺽﺮﻓﺶﯿﭘ ﺱﻼﮐ ﺯﺍ

Github ﺭﺩ ﻞﻣﺎﮐ ﺪﮐ ﺩﻮﻠﻧﺍﺩ