• ۰ تومان
  • هیچ محصولی در سبد خرید نیست.

نمایش آخرین تاریخ ورود کاربران وردپرس

به خواندن ادامه دهید
خشایار توکلی
۵ ماه پیش

سلام و دورد
بعد از مدت ها بالاخره زمانی پیدا شد که برای کاربران و با طراحی جدید مقاله ای بنویسم. امیدوارم که لذت ببرید.

اینم نتیجه کاریه که قراره انجام بدیم

مرحله ۱. آخرین زمان ورود به سیستم را در usermeta ذخیره کنید

قبل از نمایش آخرین تاریخ ورود کاربر ، اول باید آن را جمع آوری کنیم ، درسته؟
وردپرس به طور پیش فرض اون رو جمع آوری یا ذخیره نمی کنه ، بنابراین ما باید این کار را به تنهایی انجام بدیم.

همچنین شما باید بدونید که دو نوع ورود به سیستم وردپرس وجود داره که به صورت زیر هست

از طریق فرم پیش فرض wp-login.php
یا از طریق wp_signon() که در فانکشن پوسته کد زده میشه.

خوشبختانه یه hook به اسم wp-login وجود داره که برای هر دو این ها کار میکنه!

add_action( 'wp_login', 'misha_collect_login_timestamp', 20, 2 );
 
function misha_collect_login_timestamp( $user_login, $user ) {
 
	update_user_meta( $user->ID, 'last_login', time() );
 
}

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

مرحله ۲. نمایش یک ستون در صفحه همه کاربران

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

add_filter( 'manage_users_columns', 'WEBNMA_add_last_login_column' );
add_filter( 'manage_users_custom_column', 'WEBNMA_last_login_column', 10, 3 );
 
function WEBNMA_user_last_login_column( $columns ) {
 
	$columns['last_login'] = 'Last Login'; // column ID / column Title
	return $columns;
 
}
 
function WEBNMA_last_login_column( $output, $column_id, $user_id ){
 
	if( $column_id == 'last_login' ) {
 
		$last_login = get_user_meta( $user_id, 'last_login', true );
		$date_format = 'j M, Y';
 
		$output = $last_login ? date( $date_format, $last_login ) : '-';
 
	}
 
	return $output;
 
}

این کد را هم در فایل functions.php قالب خودتون قرار بدید. دو فانکشن نوشته شده که اولی برای عنوان ستون و آی دی هستش و فانکشن دوم چک میکنه اگر اون ستون وجود داشت آخرین ورود کاربر رو میگیره و در متغیر output چاپش میکنه برای تغییر فرمت نمایش تاریخش میتونید با تغییر $date_format قالب نمایش تاریخ رو تغییر بدید. به طور مثال برای ما ایرانی ها به اینصورت هست Y-m-d

خب در نتیجه این مرحله تا اینجا رسیدیم.

مرحله جایزه ، مرتب سازی ستون آخرین ورود کاربران

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

لطفاً توجه داشته باشید که مرتب سازی برای همه ستون ها به یک شکل نیست و برای همه ستون ها یک قانون وجود نداره اما برای یک ستون سفارشی کردن کاربران می توان از روشی که در زیر شرح داده شده استفاده کرد ، اما برای مثال ستونهای CPT کاملاً متفاوت هستند.

add_filter( 'manage_users_sortable_columns', 'WEBNMA_sortable_columns' );
add_action( 'pre_get_users', 'WEBNMA_sort_last_login_column' );
 
function WEBNMA_sortable_columns( $columns ) {
 
	return wp_parse_args( array(
	 	'last_login' => 'last_login'
	), $columns );
 
}
 
function WEBNMA_sort_last_login_column( $query ) {
 
	if( !is_admin() ) {
		return $query;
	}
 
	$screen = get_current_screen();
 
	if( isset( $screen->id ) && $screen->id !== 'users' ) {
		return $query;
	}
 
	if( isset( $_GET[ 'orderby' ] ) && $_GET[ 'orderby' ] == 'last_login' ) {
 
		$query->query_vars['meta_key'] = 'last_login';
		$query->query_vars['orderby'] = 'meta_value';
 
	}
 
	return $query;
 
}

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

موفق باشید

آیا مطلب برای شما مفید بود؟

این پست هیچ دیدگاهی ندارد.

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