代码中不起作用的部分不是添加或更新post meta,而是获取名为team 您正在通过um_user()。
那是因为@WebElaine 在user_register 钩子被激发,自定义字段team 尚未添加到数据库中(既不是WordPress也不是UM),因此um_user( \'team\' ) 不返回任何内容/false.
但是如果你想使用user_register 钩子来添加/更新帖子元,您可以使用$_POST[\'team\'] 通过表单提交的值。因此,请替换此:
$groupItem = get_post(um_user(\'team\'));
使用此选项:
if ( $post_id = um_user( \'team\' ) ) {
$groupItem = get_post( $post_id );
// I\'m just doing a basic validation, but you should try to make it better!
} elseif ( ! empty( $_POST[\'team\'] ) ) {
$groupItem = get_post( absint( $_POST[\'team\'] ) );
}
或者因为你依赖
team meta来自通过UM注册表提交的用户输入,那么最好使用
um_registration_complete hook 要添加/更新帖子元,请执行以下操作:
首先,请致电um_fetch_user() 在你打电话之前um_user():
um_fetch_user( $user_id ); // set the user
$groupItem = get_post( um_user( \'team\' ) );
或者,您可以使用
get_user_meta():
$post_id = get_user_meta( $user_id, \'team\', true );
$groupItem = get_post( $post_id );
然后更换
add_action(\'user_register\', \'gs_add_user_to_group\', 10, 1); 使用此选项:
add_action( \'um_registration_complete\', \'gs_add_user_to_group\', 10, 2 );
Tried & tested working on WordPress 5.3.2 with UM 2.1.4.