如何在 WordPress 中创建唯一用户 ID
Posted
技术标签:
【中文标题】如何在 WordPress 中创建唯一用户 ID【英文标题】:How to create Unique User ID in WordPress 【发布时间】:2021-06-20 06:34:35 【问题描述】:我需要从 WordPress 后端添加用户。所以,我想为他们生成唯一的用户 ID。但我可以实现它。有人可以帮我解决这个问题吗?
这是到目前为止我拍摄的内容。如果我可以将 WordPress 默认生成的唯一用户 ID 附加到我的字段末尾会更好。
// Customize the user fields
function custom_user_profile_fields($user)
$rand = randomGen(1000,5000,1);
$auth_Token = '2021-ABCD-'.$rand[0];
?>
<h3>Profile Information</h3>
<table class="form-table">
<tr>
<th><label for="srn">Student Registration Number</label></th>
<td>
<input type="text" class="regular-text" name="srn" value="<?php echo (get_option('srn') ? esc_attr( get_the_author_meta( 'srn', $user->ID ) ) : $auth_Token); ?>" id="srn" readonly /><br />
</td>
</tr>
</table>
<?php
add_action( 'show_user_profile', 'custom_user_profile_fields' );
add_action( 'edit_user_profile', 'custom_user_profile_fields' );
add_action( "user_new_form", "custom_user_profile_fields" );
function save_custom_user_profile_fields($user_id)
# again do this only if you can
if(!current_user_can('manage_options'))
return false;
# save my custom field
update_usermeta($user_id, 'srn', $_POST['srn']);
add_action('user_register', 'save_custom_user_profile_fields');
add_action('profile_update', 'save_custom_user_profile_fields');
当用户添加时,我无法将之前保存的索引号添加到该字段。它正在生成另一个并再次显示。由于我不是这方面的专家,有人可以帮我解决这个问题吗?
提前致谢
【问题讨论】:
【参考方案1】:你在解决问题的道路上是正确的,但你犯了一些错误。
您可以使用下面的工作代码:
创建字段
add_action( 'user_new_form', 'bks_add_student_reg_number_field' );
add_action( 'edit_user_profile', 'bks_add_student_reg_number_field' );
add_action( 'show_user_profile', 'bks_add_student_reg_number_field' );
function bks_add_student_reg_number_field( $user )
?>
<h3><?php _e("Extra profile information", "blank"); ?></h3>
<table class="form-table">
<tr>
<th><label for="student_reg_number"><?php _e("Student Registration Number"); ?></label></th>
<td>
<?php if (is_object($user)) ?>
<input type="text" name="student_reg_number" id="student_reg_number" value="<?php echo esc_attr( get_the_author_meta( 'student_reg_number', $user->ID )); ?>" class="regular-text" readonly disabled="disabled"/><br />
<?php else ?>
<input type="text" name="student_reg_number" id="student_reg_number" class="regular-text" /><br />
<span class="description"><?php _e("Please enter Student registration number."); ?></span>
<?php ?>
</td>
</tr>
</table>
<?php
这会在新用户生成和编辑表单中创建一个字段选项。
该字段仅在创建新用户时启用。如果注册用户已经有一个值,则该值将显示为无权更改。保存字段值
add_action( 'user_register', 'bks_student_reg_number_field' );
function bks_student_reg_number_field($user_id)
// You can maybe add checks here whch would determine if the users role is customer
// or not or maybe validate the number.
if(!current_user_can('manage_options'))
return false;
$reg_value = get_user_meta($user_id, 'student_reg_number', true);
if (isset( $_POST['student_reg_number']) && $_POST['student_reg_number'] !== $reg_value)
update_user_meta($user_id, 'student_reg_number', $_POST['student_reg_number'].'-'.$user_id);
只有user_register
挂钩用于防止更新配置文件。
您可以在字段中看到在其前面附加了-
的 user_id,并且该字段是只读且禁用的。
如果您希望用户在注册后也能够编辑 id。执行以下操作。
添加profile_update
挂钩。add_action( 'profile_update', 'bks_student_reg_number_field' );
也可以在您更新用户时运行代码。 从表单中删除readonly
和disabled
属性。
代码已经过测试并且有效。
【讨论】:
感谢您的回答。我用我现有的代码替换了它。但这给了我一个错误。Notice: Trying to get property 'ID' of non-object in....
@WPLearner,我已经用全新安装的 wordpress 测试了代码,它仍然有效。你能粘贴完整的错误吗?以便我检查。
@WPLearner,我已经修复了代码。请检查一次。
非常感谢您的支持。但不幸的是,这段代码不起作用。随后的步骤,将两个 sn-ps 添加到 functions.php
文件中。然后尝试使用Users->Add New
。它给了我一个空白的文本字段。管理面板:ibb.co/Fh8vJdm。 functions.php
文件ibb.co/ZLzNHqC
你想在那个文本字段中做什么?你必须自己填写一些东西。 @WPLearner以上是关于如何在 WordPress 中创建唯一用户 ID的主要内容,如果未能解决你的问题,请参考以下文章