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

مرحله یک : آخرین زمان ورود به سیستم را در User Meta ذخیره کنید.

 

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

همچنین باید بدانید که دو نوع ورود در وردپرس وجود دارد :

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

خوشبختانه برای wp_login اکشن هوک وجود دارد که برای هر دوی آنها کار می کند!

 


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

تنها کاری که باید انجام دهید این است که این قطعه کد را  به فایل Functions.php قالب خود اضافه کنید.

نکته : کاربرانی که از محصولات ماهدیس وب استفاده می کنند، باید این کد را به انتهای فایل myfunctions اضافه کنند.

با این کد وردپرس شروع به جمع‌آوری آخرین زمان ورود و ذخیره آن در جدول wp_usermeta ({db prefix}usermeta) هر بار که کاربر در وب‌سایت شما وارد می‌شود، می‌کند.

 

مرحله دو : نمایش یک ستون در بخش کاربران

 

من قبلاً تعداد زیادی آموزش ستون ها را در وب سایت خود دارم مانند این در مورد ستون های WooCommerce یا ایجاد یک ستون تاریخ ثبت قابل مرتب سازی. بنابراین من در اینجا کوتاه خواهم آمد.


add_filter( 'manage_users_columns', 'mweb_user_last_login_column' ); 
add_filter( 'manage_users_custom_column', 'mweb_last_login_column', 10, 3 ); 
 
function mweb_user_last_login_column( $columns ) { 
 
 $columns['last_login'] = 'آخرین ورود';  
 return $columns; 
  
} 
 
function mweb_last_login_column( $output, $column_id, $user_id ){ 
 
 if( $column_id == 'last_login' ) { 
 
  $last_login = get_user_meta( $user_id, 'last_login', true ); 
   
  $output = $last_login ? date_i18n( get_option( 'date_format' ), strtotime( $last_login ) ) : '-'; 
   
 } 
 
 return $output; 
  
}

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

 

 

 

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

 

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

 


add_filter( 'manage_users_sortable_columns', 'mweb_sortable_columns' ); 
add_action( 'pre_get_users', 'mweb_sort_last_login_column' ); 
 
function mweb_sortable_columns( $columns ) { 
 
 return wp_parse_args( array( 
   'last_login' => 'last_login' 
 ), $columns ); 
 
} 
 
function mweb_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; 
 
}

 

بیشتر بخوانید : مرتب سازی محصولات براساس موجودی در پیشخوان وردپرس

دیدگاه کاربران
  • ستاره ۲۰ خرداد ۱۴۰۱

    در قالب دیجی لند تست کردم و به درستی کار کرد بدون هیچ مشکلی
    ممنونم

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی Time limit is exhausted. Please reload CAPTCHA.