如何将自定义表单域添加到用户配置文件页?

时间:2010-11-14 作者:rsman

用户配置文件页面包含以下字段:

用户名
名字
姓氏
昵称显示姓名联系信息电子邮件网站AIM Yahoo IM
Jabber/Google Talk

如何将更多字段添加到此部分。字段,如电话号码、地址或其他任何内容。

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

您需要使用\'show_user_profile\', \'edit_user_profile\', \'personal_options_update\'\'edit_user_profile_update\' 挂钩。

这里有一些code to add a Phone number:

add_action( \'show_user_profile\', \'yoursite_extra_user_profile_fields\' );
add_action( \'edit_user_profile\', \'yoursite_extra_user_profile_fields\' );
function yoursite_extra_user_profile_fields( $user ) {
?>
  <h3><?php _e("Extra profile information", "blank"); ?></h3>
  <table class="form-table">
    <tr>
      <th><label for="phone"><?php _e("Phone"); ?></label></th>
      <td>
        <input type="text" name="phone" id="phone" class="regular-text" 
            value="<?php echo esc_attr( get_the_author_meta( \'phone\', $user->ID ) ); ?>" /><br />
        <span class="description"><?php _e("Please enter your phone."); ?></span>
    </td>
    </tr>
  </table>
<?php
}

add_action( \'personal_options_update\', \'yoursite_save_extra_user_profile_fields\' );
add_action( \'edit_user_profile_update\', \'yoursite_save_extra_user_profile_fields\' );
function yoursite_save_extra_user_profile_fields( $user_id ) {
  $saved = false;
  if ( current_user_can( \'edit_user\', $user_id ) ) {
    update_user_meta( $user_id, \'phone\', $_POST[\'phone\'] );
    $saved = true;
  }
  return true;
}
该代码将向用户屏幕添加一个如下所示的字段:

还有一些关于这个主题的博客帖子可能会有所帮助:

结束

相关推荐

导入到WordPress MultiSite时禁用HTML过滤

我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo