看起来您想在这里做几件不同的事情:
当用户注册时,生成一个半随机数作为其标识符。允许搜索该标识符。到第一点,您可以连接到user_register
行动这是来自wp-includes/user.php
:
1774 /**
1775 * Fires immediately after a new user is registered.
1776 *
1777 * @since 1.5.0
1778 *
1779 * @param int $user_id User ID.
1780 */
1781 do_action( \'user_register\', $user_id );
因此,我们可以添加如下函数:
3 /**
4 * Generates a random identifier for newly created users.
5 *
6 * @param int $user_id The WordPress ID of the created user.
7 * @return void
8 */
9 function wp32325ae_random_user_identifier( $user_id ) {
10 $identifier = strtoupper( uniqid( \'LEF\' ) );
11
12 // If you need a certain length:
13 $identifier = substr( $identifier, 0, 10 ); // Truncate to length of 10.
14
15 // Verify this doesn\'t collide with another user.
16 $collisions = new \\WP_User_Query( [
17 \'meta_key\' => \'wp_custom_user_id\',
18 \'meta_value\' => $identifier,
19 ] );
20
21 // In the case of a collision, try again.
22 if ( count( $collisions ) ) {
23 return wp32325ae_random_user_identifier( $user_id );
24 }
25
26 $result = update_user_meta( $user_id, \'wp_custom_user_id\', $identifier );
27
28 if ( false === $result ) {
29 // Something went wrong! Hopefully, your code doesn\'t get here.
30 wp_die( \':(\' );
31 }
32 }
33
34 add_action( \'user_register\', \'wp32325ae_random_user_identifier\' );
一些注释:-行
10
- 您可以使用任何您认为适合生成随机标识符的方法来替换它。-线
13
- 我们将ID截断为总共10个字符,但您可以根据需要进行修改。-线
23
将在发生冲突时尝试生成另一个ID。-线
28
update_user_meta
返回
int
如果创建了元值,但将返回
false
如果更新失败,或者值没有更改。从理论上讲,这不应该发生在你身上。-行上使用的元键
17
和
26
, 下面使用的是
wp_custom_user_id
. 您可以对这个字段名使用任何您想要的名称,只要确保它是您的代码所独有的,以避免与WordPress或其他插件发生冲突。这些值将存储在
wp_usermeta
桌子
要稍后使用,可以执行以下操作:
// Assuming you already have $user available as an instance of \\WP_User
echo $user->wp_custom_user_id; // Get the ID using the magic __get from $user
echo get_user_meta( $user->ID, \'wds_custom_user_id\', true ); // Get the ID the "WordPress way"
至于搜索,让我们看看上面的碰撞检查。。。
15 // Verify this doesn\'t collide with another user.
16 $collisions = new \\WP_User_Query( [
17 \'meta_key\' => \'wp_custom_user_id\',
18 \'meta_value\' => $identifier,
19 ] );
此代码可用于获取
\\WP_User
与搜索条件匹配的对象,因此假设您在
$_GET
参数
s
:
$search = filter_input( INPUT_GET, \'s\', FILTER_SANITIZE_STRING );
$users = new \\WP_User_Query( [
\'meta_key\' => \'wp_custom_user_id\',
\'meta_value\' => $search,
] );
现在
$users
将包含具有
meta_key
属于
wp_custom_user_id
, 值为
$search
.