在WP/Woocommerce with subscriptions插件环境中,我设法在用户创建级别在用户元表中保存一个自定义的“member\\u id”:
function assignuserid($user_id) {
global $wpdb;
$latestid=$wpdb->get_var("SELECT meta_value from $wpdb->usermeta where meta_key=\'member_id\' order by meta_value DESC limit 1;");
update_user_meta( $user_id, \'member_id\', $latestid+1 );
}
add_action( \'user_register\', \'assignuserid\');
重要提示:这适用于来自管理后台(用户>添加新)和woocommerce订单用户注册表单的所有角色(如管理员或订阅者)的用户。
现在,当我尝试使用代码仅为用户role=“subscriber”生成member\\u id时
function assignuserid($user_id) {
if ( user_can( $user_id, \'subscriber\')) {
global $wpdb;
$latestid=$wpdb->get_var("SELECT meta_value from $wpdb->usermeta where meta_key=\'member_id\' order by meta_value DESC limit 1;");
update_user_meta( $user_id, \'member_id\', $latestid+1 );
}
}
add_action( \'user_register\', \'assignuserid\');
这对从管理后台创建的用户很有效:管理员不获取成员id,订阅者获取成员id,但通过woocommerce订单用户注册表单创建的用户都不获取用户元“成员id”字段。他们是订户。我不明白为什么。。。