检测对USER_META的更改并检索旧值和新值

时间:2018-04-18 作者:Stephen

我想跟踪管理员中某个用户元的更改时间,然后执行一个操作。我想我找到了正确的钩子(从https://codex.wordpress.org/Plugin_API/Action_Reference/profile_update), 但当我使用此代码时:

add_action( \'profile_update\', \'my_profile_update\', 10, 2 );

function my_profile_update( $user_id, $old_user_data ) {
    error_log(print_r($old_user_data,true));
}
我的错误日志不显示我正在更改的用户元,只显示主wp\\U users表中的值和一系列功能。当配置文件保存在admin中时,如何获取之前更改的user\\u元值(或检测更改的user\\u元值)?

1 个回复
最合适的回答,由SO网友:Stephen 整理而成

我找到了答案。我需要使用insert_user_meta 过滤器,而不是动作挂钩。然后我还需要一个get_user_meta (获取旧数据)和$_POST 获取要更改的值。总而言之,这是我的最后一段代码,用于查找user_meta 字段(在我使用ACF创建的情况下)从一个值更改为另一个值:

add_filter( \'insert_user_meta\', function( $meta, $user, $update ) {
  if( true !== $update ) return $meta; // if not an update (b/c it is a create) do nothing
if(is_admin()) { // check if we are in admin not front end
  $old_meta = get_user_meta( $user->ID );
  if( $old_meta[\'verified_member\'][0] !== $_POST[\'acf\'][\'field_5ad4eecd7564b\'] ) {
    error_log("verified_member was modified from " . $old_meta[\'verified_member\'][0] . " to " . $_POST[\'acf\'][\'field_5ad4eecd7564b\']);
  }}
  return $meta;
}, 10, 3 );

结束

相关推荐

Wordpress Admin Tooltip hooks

我想知道是否有一种方法可以使用Wordpress管理工具提示(灰色和蓝色),当你更新你的Wordpress(3.x)时会显示这些提示。显示新功能。谢谢