向所有现有用户添加自定义字段
您必须获得用户列表,然后在循环中为每个用户设置一个自定义字段。
$users = get_users( [
\'fields\' => \'id\',
\'meta_key\' => \'YOUR_META_KEY\',
\'meta_compare\' => \'NOT EXISTS\'
] );
if ( is_array($users) && count($users) )
{
$meta_value = false;
foreach( $users as $user_id ) {
add_user_meta( $user_id, \'YOUR_META_KEY\', $meta_value, true);
}
}
具有单个查询的版本需要使用SQL查询。如果出现错误,函数将返回FALSE。
global $wpdb;
$sql_query = "INSERT INTO {$wpdb->usermeta} (user_id, meta_key, meta_value) "
. "SELECT ID, \'YOUR_META_KEY\', \'\' FROM {$wpdb->users} u "
. " LEFT JOIN {$wpdb->usermeta} um ON um.user_id = u.ID AND um.meta_key=\'YOUR_META_KEY\' "
. " WHERE um.umeta_id IS NULL";
$result = $wpdb->query( $sql_query );
上述代码应运行一次。
Example:
功能。php
add_action( \'init\', \'se338136_add_meta_to_existing_users\' );
function se338136_add_meta_to_existing_users() {
$option_meta_name = \'_my_meta_added\';
$executed = get_option( $option_meta_name, false );
if ( $executed == 1 )
return;
// here one of the above codes
// if ($result !== false )
update_option( $option_meta_name, 1 );
}
添加新用户时添加自定义字段
add_filter( \'insert_user_meta\', \'new_user_meta\', 20, 3);
/**
* @param array $meta Default meta values and keys for the user.
* @param WP_User $user User object.
* @param bool $update Whether the user is being updated rather than created.
*/
function new_user_meta( $meta, $user, $update )
{
if ( $update )
return $meta;
$meta[\'YOUR_META_KEY\'] = false;
return $meta;
}
<小时>
References: