您可以使用的修改版本this 答复人@s_ha_dum.
在这里,您可以设置用户元而不是选项(即使元查询比选项查询慢)
add_action(\'save_post\', \'user_last_update\', 10, 2);
function user_last_update($id, $p) {
  if (
      (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) 
      || (defined(\'DOING_AJAX\') && DOING_AJAX)
      || ($p->post_status !== \'publish\')
  ) {
    return;
  }
  update_user_meta( get_current_user_id(), \'last_update\', time() );
}
 通过这种方式,您可以在user meta中保存上次编辑的时间戳。
现在,您可以编写一个函数来返回自上次编辑以来的天数
function user_last_edit(){
  $id = get_current_user_id();
  if ( ! $id ) return false;
  $recent = get_user_meta( $id, \'last_update\', true );
  return $recent ? round( abs( time() - $recent ) / DAY_IN_SECONDS ) : -1;
}
 函数返回
false 如果没有记录用户,则返回
-1 如果用户从未发布过帖子。
执行的查询更简单,PHP所做的工作更少,结果也被缓存。
这只对发布新帖子的用户有效,因此所有用户都将以空白开头,但您可以编写只运行一次的函数来设置所有用户元。
function setup_last_edit() {
  if ( get_transient(\'setup_last_edit_done\') ) return; // this function run once
  $users = get_users( array(\'fields\'=> \'ID\') );
  foreach ( $users as $userid ) {
     $args = array(
       \'author\' => $userid,
       \'posts_per_page\' => 1,
       \'orderby\' => \'date\',
       \'order\' => \'DESC\'
     );
     $posts = get_posts($args);
     if ( empty($posts) ) continue;
     $p = array_pop($posts);
     $last = mysql2date(\'U\', $p->post_modified );
     update_user_meta( $userid, \'last_update\', $last );
  }
  set_transient(\'setup_last_edit_done\', 1);
}
add_action(\'admin_init\', \'setup_last_edit\');
 当您在后端运行时,此函数只运行一次(以避免前端速度减慢)。这是一个
very slow 添加后的功能so
functions.php 第一次打开仪表板需要几秒钟。。。此函数只运行一次,但如果在它完成工作后删除(或注释)它可能会更好。