管理员创建用户时添加额外的字段

时间:2011-05-31 作者:Permana

我已经创建了额外的字段,用户可以在“您的个人资料”页面上编辑。WordPress注册页面上还提供了额外字段。我想问的是,如何将字段添加到用户>添加新页面?因此,当admin创建用户时,admin还输入用户的额外字段

4 个回复
最合适的回答,由SO网友:Bainternet 整理而成

在该页面上没有挂钩(用户>添加新页面),则user_new_form_tag 除非破解核心文件,否则不可能添加新字段wp-admin/user-new.php .

您可以尝试通过在JQuery中添加并在$_post[\'action\'] == \'adduser\' 但这不是很好的做法。

SO网友:B. Shea

这是一个老问题,但现在有了。。但形式结束(仅限)。

WP版本4.3.0-文件“/WP admin/user new.php”-第330行

/**
 * Fires at the end of the new user form.
 *
 * Passes a contextual string to make both types of new user forms
 * uniquely targetable. Contexts are \'add-existing-user\' (Multisite),
 * and \'add-new-user\' (single site and network admin).
 *
 * @since 3.7.0
 *
 * @param string $type A contextual string specifying which type of new user form the hook follows.
 */
do_action( \'user_new_form\', \'add-existing-user\' );
简短示例:

add_action(\'user_new_form\', \'addmycustomfield\');
function addmycustomfield() {
?>
<table class="form-table">
<tr>
<th scope="row">My test field:</th>
<td><input type="text" size="32" name="testfield" value="<?php echo get_option(\'madeup_wp_option\'); ?>" /></td>
</tr>
</table> 
<?php
}
这将在添加用户表单的末尾放置一个字段。如何从注册/添加用户/配置文件编辑/etc保存自定义用户元数据/etc超出了问题的范围,之前已经回答过多次。请参见注释。

SO网友:funwhilelost

我可以通过一个相当脆弱的黑客来做到这一点。它使用输出缓冲区插入新字段。谢天谢地,这里有一个很好的钩子来拯救球场。

// FRAGILE!  This rewrites code directly in the buffer, upgrading WP may break this
function wpse18772_add_fields( $buffer ) {
  $input_html = \'<input type="text" name="your-new-field" id="your-new-field">\';

  // will insert a new field after "role"
  $buffer = preg_replace( \'~<label\\s+for="role">(.*?)</tr>~ims\', \'<label for="role">$1</tr><tr class="form-field"><th>My New Field</th><td>\' . $input_html . \'</td></tr>\', $buffer );

  return $buffer;
}

function wpse18772_buffer_start() { ob_start("wpse18772_add_fields");  }
function wpse18772_buffer_end() { ob_end_flush(); }
add_action(\'admin_head\', \'wpse18772_buffer_start\', 10, 1);
add_action(\'admin_footer\', \'wpse18772_buffer_end\', 10, 1);

function wpse18772_save_fields($user_id) {
  if($_POST[\'action\'] != "adduser" && $_POST[\'action\'] != "createuser") return;

  if(!empty($_POST[\'your-new-field\'])) {
    // save field to meta, or do whatever you want to here
  }
}
add_action(\'user_register\', \'wpse18772_save_fields\');

SO网友:Ralf912

See this answer. 没有挂钩,但可以使用jQuery来实现。只需使用jQuery添加html标记,就可以了。

结束

相关推荐

wp-admin slow in multisite

使用子域多站点运行Wordpress 3.1.2(最新更新,大约一年前作为3.0安装);使用Sunrise域映射插件。前端速度很快,后端(wp admin)在网络管理站点(www.example.com/wp admin)上速度很慢,但在其中一个子域后端(foo.example.com/wp admin)上以“正常速度”运行。服务器是我们自己的,Ubuntu 10.04带有mod\\u安全性(我听说它可以减慢速度)。我能做些什么来加速后端或以某种方式运行跟踪吗?