如何添加WordPress用户个人资料的额外字段信息?

2017-03-08 07:31 阅读 291 次 评论 42 条

WordPress 站点默认的用户个人资料项目相对比较少,对于有较多用户或作者的站点而言,不利于大家的互动交流,用户体验也会有所下降,所以我们非常有必要在个人资料中新增加一些额外的字段,比如 QQ 信息、微信信息等。下面 boke112 就来为大家说一下如何添加 WordPress 用户个人资料的额外字段信息。

如何添加WordPress用户个人资料的额外字段信息? WordPress 第1张

第一种情况:在个人资料中的『联系信息』直接添加

如果只是想单纯地增加一个用户的 QQ、微信、微博、赞赏地址等比较简单的个人信息,我们只需要将它们直接添加到个人资料中的『联系信息』中添加相应的作者信息字段即可。方法也很简单,只需要将以下代码添加到我们主题的 functions.php 文件中即可。

  1. // 联系信息中添加作者信息字段
  2. add_filter('user_contactmethods', 'boke112_user_contact');
  3. function boke112_user_contact($user_contactmethods){
  4.     unset($user_contactmethods['aim']);
  5.     unset($user_contactmethods['yim']);
  6.     unset($user_contactmethods['jabber']);
  7.     $user_contactmethods['qq'] = 'QQ';
  8.     $user_contactmethods['weixin'] = '微信号';
  9.     $user_contactmethods['weibo'] = '新浪微博';
  10.     $user_contactmethods['toutiao'] = '头条号';
  11.     $user_contactmethods['zanshang'] = '赞赏作者';
  12.     return $user_contactmethods;
  13. }

说明:以上默认添加 5 个作者信息字段,添加代码时请自行修改后添加。

弊端:这种方法相对比较简单,但是只能新增到“联系信息”那里,不能添加自定义的描述文字(提示文本),只能是 input 表单。

如何添加WordPress用户个人资料的额外字段信息? WordPress 第2张

第二种情况:在个人资料中增加额外的信息项

如果我们不想直接添加在个人资料的联系信息中,而且想要添加的信息也比较复杂,比如除了需要添加 input 表单外,还需要添加 textarea 类型的表单。此时,我们只需要将以下代码添加到我们主题的 functions.php 文件中即可。

  1. //个人资料中直接添加额外的作者信息
  2. add_action( 'show_user_profile', 'extra_user_profile_fields' );
  3. add_action( 'edit_user_profile', 'extra_user_profile_fields' );
  4. function extra_user_profile_fields( $user ) { ?>
  5. <h3>额外信息</h3>
  6. <table class="form-table">
  7.     <tr>
  8.         <th><label for="qq">QQ在线</label></th>
  9.         <td>
  10.             <input type="text" name="qq" id="qq" value="<?php echo esc_attr( get_the_author_meta( 'qq', $user->ID ) ); ?>" class="regular-text" /><br />
  11.             <span class="description">投稿作者的QQ在线</span>
  12.         </td>
  13.     </tr>
  14.     <tr>
  15.         <th><label for="weixin">微信号</label></th>
  16.         <td>
  17.             <input type="text" name="weixin" id="weixin" value="<?php echo esc_attr( get_the_author_meta( 'weixin', $user->ID ) ); ?>" class="regular-text" /><br />
  18.             <span class="description">投稿作者的微信二维码地址</span>
  19.         </td>
  20.     </tr>
  21.     <tr>
  22.         <th><label for="weibo">新浪微博</label></th>
  23.         <td>
  24.             <input type="text" name="weibo" id="weibo" value="<?php echo esc_attr( get_the_author_meta( 'weibo', $user->ID ) ); ?>" class="regular-text" /><br />
  25.             <span class="description">投稿作者的新浪微博地址</span>
  26.         </td>
  27.     </tr>
  28.     <tr>
  29.         <th><label for="toutiao">头条号</label></th>
  30.         <td>
  31.             <input type="text" name="toutiao" id="toutiao" value="<?php echo esc_attr( get_the_author_meta( 'toutiao', $user->ID ) ); ?>" class="regular-text" /><br />
  32.             <span class="description">投稿作者的头条号地址</span>
  33.         </td>
  34.     </tr>
  35.     <tr>
  36.         <th><label for="zanshang">赞赏作者</label></th>
  37.         <td>
  38.             <input type="text" name="zanshang" id="zanshang" value="<?php echo esc_attr( get_the_author_meta( 'zanshang', $user->ID ) ); ?>" class="regular-text" /><br />
  39.             <span class="description">赞赏作者的二维码地址</span>
  40.         </td>
  41.     </tr>
  42.     <tr>
  43.         <th><label for="guanggaoyu">广告语</label></th>
  44.         <td><textarea name="guanggaoyu" id="guanggaoyu" rows="5" cols="30"><?php echo esc_attr( get_the_author_meta( 'guanggaoyu', $user->ID ) ); ?></textarea>
  45.         <p class="description">投稿作者的广告语</p></td>
  46.     </tr>
  47. </table>
  48. <?php }
  49. add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
  50. add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
  51. function save_extra_user_profile_fields( $user_id ) {
  52.     if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
  53.     update_usermeta( $user_id, 'qq', $_POST['qq'] );
  54.     update_usermeta( $user_id, 'weixin', $_POST['weixin'] );
  55.     update_usermeta( $user_id, 'weibo', $_POST['weibo'] );
  56.     update_usermeta( $user_id, 'toutiao', $_POST['toutiao'] );
  57.     update_usermeta( $user_id, 'zanshang', $_POST['zanshang'] );
  58.     update_usermeta( $user_id, 'guanggaoyu', $_POST['guanggaoyu'] );
  59. }

说明:以上只是本站用到的一个比较简单的样例,含有几条input 表单和一条textarea类型的表单。大家添加时请自行修改成其他类型的表单即可。

代码修改自WordPress大学

增加的个人信息字段如何引用?

在个人资料中添加好额外的用户信息后,我们还需要在站点某个位置引用这些信息,此时,我们只需要使用 the_author_meta() 或 get_the_author_meta() 这两个函数即可。比如我们想输出或获取 QQ 字段的值,可以这样获得:

  1. <?php
  2. //直接输出QQ字段的值
  3. the_author_meta( 'qq' );
  4. //这个也是输出QQ字段的值
  5. echo get_the_author_meta( 'qq' );
  6. ?>

说明:以上这两个函数用来获取网站用户的信息,如果在循环中则不需要指定用户的 ID,直接调用当前文章的作者的信息,否则必须得指定需要获取的用户的 ID 才行。同时,在获取输入这些字段值时,建议加上一个条件判断会比较好,比如输入作者 QQ,首先判断作者 QQ 这个字段是否有值,有的情况下才输出。

  1. <?php if ( get_the_author_meta( 'qq' ) ){
  2.     echo '作者QQ:'.get_the_author_meta( 'qq' );
  3. }?>

再比如想获取并输出 ID 为 5 的作者 QQ 号,可以参照以下代码:

  1. <?php if ( get_the_author_meta( 'qq' ,5) ){
  2.     echo '作者QQ:'.get_the_author_meta( 'qq',5 );
  3. }?>

get_the_author_meta() 函数具体用法

get_the_author_meta( $field, $user_id );

参数:

$field:(字符串)(可选)要返回的数据项,默认值:None,可选值:

  • user_login
  • user_pass
  • user_nicename
  • user_email
  • user_url
  • user_registered
  • user_activation_key
  • user_status
  • roles
  • display_name
  • nickname
  • first_name
  • last_name
  • description
  • jabber
  • aim
  • yim
  • user_level
  • user_firstname
  • user_lastname
  • rich_editing
  • comment_shortcuts
  • admin_color
  • plugins_per_page
  • plugins_last_view
  • ID

$user_id:(整数)(可选)需要返回的数据的用户 ID。如果在循环里可以不指定,会自动指定为当前文章的作者。默认值:None

本文地址:http://boke112.com/3829.html
文章标签: ,   ,   ,  
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:aiboke112
版权声明:本文为原创文章,版权归  所有,欢迎分享本文,转载请保留出处!
WordPress免费响应式主题:Nana

发表评论


表情

  1. admit
    admit 【农民】 @回复

    请问一下怎么实现不同文章作者显示文章作者的二维码呢

    • boke112导航
      boke112导航【站长】2017-05-19 10:50  回复

      @admit[吃惊] 文章就说得很详细了,把作者当做用户,角色就为投稿者,然后为用户增加一个额外字段,比如二维码,然后编辑作者信息中输入该作者对应的二维码图片地址,然后就在文章中引用即可实现不能作者显示不同的二维码。

      • admit
        admit 【农民】2017-05-19 10:53  回复

        @boke112导航能不能实现让用户自己上传图片呢

        • boke112导航
          boke112导航【站长】2017-05-19 10:59  回复

          @admit万能的WordPress没有什么不可以,只要你的主题有会员中心,开放上传图片功能给他们就可以了。具体就看你怎么折腾了。

  2. 何先生
    何先生 【农民】 @回复

    很实用,最近正想把打赏改为不同文章作者显示不同作者的二维码。

    • boke112导航
      boke112导航【站长】2017-03-11 16:37  回复

      @何先生[嘻嘻] 本站已经用上这个了,是投稿文章就显示作者的打赏二维码,感觉很实用

      • 何先生
        何先生 【农民】2017-03-12 09:43  回复

        @boke112导航[亲亲] 今天也利用休息时间搞定了。谢谢分享思路,没有这个我估计我得研究半天,哈哈

        • boke112导航
          boke112导航【站长】2017-03-12 23:26  回复

          @何先生[嘻嘻] 不用客气,大家看完文章有所帮助,那么本站建站的目的就达到了。也欢迎有机会多投稿实用的技术文章,以便更多人得到帮助和学习。

  3. 片段艺文志
    片段艺文志 【村长】 @回复

    最好再能显示图标,不就更完美了。。。

  4. 龙笑天
    龙笑天 【市长】 @回复

    这个确实很实用~ 找机会转走~ [嘻嘻]

  5. 钓鱼小站
    钓鱼小站 【县长】 @回复

    有需要的话在看看。先码了。

  6. INLOBASE
    INLOBASE 【村长】 @回复

    是的,比较适合多用户站点,需要展示一些用户或作者信息时有用,若是个人博客倒是没有太大必要。

    • boke112导航
      boke112导航【站长】2017-03-09 09:46  回复

      @INLOBASE是的,大部分其实都用不到,不过本站现在就用上了,本站的投稿作者就需要到这些额外的信息,用来暂时投稿作者的一些信息。

  7. 姜辰
    姜辰 【市长】 @回复

    多用户站点专用的哎~

  8. 刘䶮曌博客
    刘䶮曌博客 【村长】 @回复

    博主的这个代码高亮是插件嘛?还有行号,真不错

    • boke112导航
      boke112导航【站长】2017-03-09 09:47  回复

      @刘䶮曌博客[疑问] 你用着知更鸟的begin主题竟然不懂?你所使用的主题就自带有那个代码高亮转换页面模板,我用的也是这个模板来转换的

  9. 明月登楼
    明月登楼 【总理】 @回复

    适合有多个编辑或者投稿作者的站!

  10. 夏天烤洋芋
    夏天烤洋芋 【县长】 @回复

    这些字段,我绝对对于我没啥用么。

  11. 闲鱼
    闲鱼 【县长】 @回复

    蛮实用的,如果网站有多人发布文章就可以获取不同信息展示了

  12. 淘小众
    淘小众 【镇长】 @回复

    咨询下,如果升级Wordpress
    会不会对我网站有啥影响,尤其是模版这块

  13. 玉满斋
    玉满斋 【市长】 @回复

    特来拜访,留下脚印!

  14. 小萝博客
    小萝博客 【县长】 @回复

    听说又出了新漏洞

  15. 都市田园博客
    都市田园博客 【队长】 @回复

    学习了。

  16. 彩票自助机
    彩票自助机 【县长】 @回复

    楼主有没有 软件下载站的源码呀?

  17. 网赚博客
    网赚博客 【队长】 @回复

    多谢分享啊

  18. 金榜台博客
    金榜台博客 【市长】 @回复

    不错,学习了

  19. 明月登楼
    明月登楼 【总理】 @回复

    不错了,学习一下!

  20. 御宅学院
    御宅学院 【村长】 @回复

    国外模板,分享都是FaceBook……,怎么修改成国内的微博,这个有研究吗

  21. 雅兮网
    雅兮网 【省长】 @回复

    很全面,适合多用户WordPress站点

  22. DIY大全
    DIY大全 【镇长】 @回复

    感谢分享

  23. 码农BTS
    码农BTS 【市长】 @回复

    一般来说感觉没有这个需求

  24. 风中世界
    风中世界 【镇长】 @回复

    学而时习之 [威武] [威武]

  25. 靠谱学生兼职网
    靠谱学生兼职网 【市长】 @回复

    还可以,蛮好的。