我很感兴趣当管理员添加新用户(Wordpress)时,如何添加字段(作为输入)。不是在用户注册时,而是仅在管理员添加新用户时。我在网上找到了例如,但仅针对要编辑用户的字段,但我想添加新用户。来自输入的新数据 - 并将它们保存在用户元表中。有人在做这个练习。
答案 0 :(得分:8)
重新审视这个有趣的问题,我会说不,这是不可能的。
分析文件/wp-admin/user-new.php
,可以使用无操作挂钩。即使遵循<form>
中使用的功能也无处可寻。
一个可能的脏解决方案是使用jQuery注入字段。
将新用户添加到数据库时,我们可以使用钩子user_profile_update_errors
来更新用户元(也称为hack)。
更新:可以添加新字段:
add_action( 'user_new_form', function( $type ){
if( 'add-new-user' !== $type )
return;
echo '<input type="text" name="custom_user_field" id="custom_user_field" value=""/>';
});
要获取发布的数据并进行处理,请使用:
add_action( 'user_profile_update_errors', function( $data )
{
if ( is_wp_error( $data->errors ) && ! empty( $data->errors ) )
return;
# Do your thing with $_POST['custom_user_field']
wp_die( sprintf( '<pre>%s</pre>', print_r( $_POST, true ) ) );
});
答案 1 :(得分:2)
由于wordpress 3.7有一个钩子。
使用钩子“user_new_form”。它在插入提交按钮之前触发。 这样,您就可以在新用户表单中显示自己的自定义字段。
答案 2 :(得分:0)
我发现&#34; user_profile_update_errors&#34;这里建议的钩子没有给我user_id允许我保存元字段。 因此我改为使用&#34; user_register&#34;如下面的代码所示。
希望这会帮助别人。
// add fields to new user form
add_action( 'user_new_form', 'mktbn_user_new_form' );
function mktbn_user_new_form()
{
?>
<table class="form-table">
<tbody>
<tr class="form-field">
<th scope="row"><label for="business_name">Company </label></th>
<td><input name="business_name" type="text" id="business_name" value=""></td>
</tr>
<tr class="form-field">
<th scope="row"><label for="business_type">Profession </label></th>
<td><input name="business_type" type="text" id="business_type" value=""></td>
</tr>
<tr class="form-field">
<th scope="row"><label for="user_mobile">Mobile </label></th>
<td><input name="user_mobile" type="text" id="user_mobile" value=""></td>
</tr>
</tbody>
</table>
<?php
}
// process the extra fields for new user form
add_action( 'user_register', 'mktbn_user_register', 10, 1 );
function mktbn_user_register( $user_id )
{
mikakoo_log( 'user_register: ' . $user_id );
if ( isset( $_POST['business_name'] ))
{
update_user_meta($user_id, 'business_name', $_POST['business_name']);
}
if ( isset( $_POST['business_type'] ))
{
update_user_meta($user_id, 'business_type', $_POST['business_type']);
}
if ( isset( $_POST['user_mobile'] ))
{
update_user_meta($user_id, 'user_mobile', $_POST['user_mobile']);
}
}