ﺲﻳﺮﺑﺩﺭﻭﻭ ﻡﺪﺨﺘﺴﻣ ﺮﻈﺣ ﺔﻴﻔﻴﻛ


.ﻯﺮﺧﻷﺍ ﺔﻌﺋﺍﺮﻟﺍ ءﺎﻴﺷﻷﺍ ﺾﻌﺑﻭ ﻦﻴﻣﺪﺨﺘﺴﻤﻟﺍ ﺓﺪﻤﻋﺃ ﺓﺭﺍﺩﺇﻭ ﺕﺍءﺍﺮﺟﻹﺍﻭ WordPress ﺕﺎﺤﺷﺮﻣ

ﺪﻋﺎﺴﻤﻟﺍ ﺞﻣﺎﻧﺮﺒﻟﺍ ءﺎﺸﻧﺇ :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 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 ﺓﻮﻄﺨﻟﺍ

:ﺎﻬﺋﺎﺸﻧﺈﺑ ﻢﻘﻨﻟ .ﻻ ﻡﺃ ﺍﺭًﻮﻈﺤﻣ ﻡﺪﺨﺘﺴﻤﻟﺍ ﻥﺎﻛ ﺍﺫﺇ ﺎﻤﻣ ﻖﻘﺤﺘﻠﻟ()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 );
}

.()rc_ban_users ﻲﻓ ﻅﻮﻔﺤﻤﻟﺍ ﺭﺎﻴﺨﻟﺍ ﺔﻤﻴﻗ ﻉﺎﺟﺭﺈﺑ ﺔﻃﺎﺴﺒﺑ ﺔﻟﺍﺪﻟﺍ ﻩﺬﻫ ﻡﻮﻘﺗ ،ﺱﺎﺳﻷﺍ ﻲﻓ

:ﻲﻟﺎﺘﻟﺍ ﻮﺤﻨﻟﺍ ﻰﻠﻋ ﻥﻮﻜﻳ ﻥﺃ ﻲﻐﺒﻨﻳ ﻱﺬﻟﺍﻭ ﻡﺪﺨﺘﺴﻤﻟﺍ ﺭﺍﺪﺻﺇ ﺔﺤﻔﺻ ﻲﻓ ﺪﻳﺪﺟ ﺭﺎﻴﺘﺧﺍ ﻊﺑﺮﻣ

.ﻝﻮﺧﺪﻟﺍ ﻞﻴﺠﺴﺘﺑ ﻦﻳﺭﻮﻈﺤﻤﻟﺍ ﻦﻴﻣﺪﺨﺘﺴﻤﻟﺍ ﻡﺎﻴﻗ ﺐﻨﺠﺘﻟ ﻝﻮﺧﺪﻟﺍ ﻞﻴﺠﺴﺗ ﺝﺫﻮﻤﻨﺑ ﺔﻔﻴﻇﻭ ﻂﺑﺭ ﻲ

ﻝﻮﺧﺪﻟﺍ ﻞﻴﺠﺴﺘﻟ ﻦﻳﺭﻮﻈﺤﻤﻟﺍ ﻦﻴﻣﺪﺨﺘﺴﻤﻟﺍ ﺐﻨﺠﺗ :5 ﺓﻮﻄﺨﻟﺍ

.WP_Error ﺔﺌﻓ ﺔﻔﻴﻇﻮﻟﺍ ﻩﺬﻫ ﻡﺪﺨﺘﺴﺘﺳ ."()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 );

.WP_Error ﺔﻴﺿﺍﺮﺘﻓﻻﺍ WordPress ﺔﺌﻓ ﻡﺍﺪﺨﺘﺳﺎﺑ "wp_authenticate_user" ﺢﺷﺮﻤﺑ ﺔﻔﻴﻇﻭ

ﺐﺜﻴﺟ ﻰﻠﻋ ﻞﻣﺎﻜﻟﺍ ﺩﻮﻜﻟﺍ ﻞﻳﺰﻨﺘﺑ ﻢﻗ