WordPress文章编辑页删除相关模块

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

     在WordPress后台的文章编辑页,有很多的模块,如"摘要"、"发送Trackbacks"、"分类"、"标签"、"自定义域"、"讨论","作者"等。如下图就是侧边栏的"发布"和"标签"模块。

文章编辑页模块

     其实WordPress提供这么多的面板,有很多我们是用不着的,如"发送 Trackbacks","评论"等,不同用户还有不同的喜好。这时候我们可以将不需要的面板删除,方法很简单,在文章编辑页面右上角有个 "显示选项" 按钮,点击可以弹出如下图所示的选项,你可以根据需要去除不需要的模块。

显示选项

     但是当你的博客有多个注册用户的时候,想对某些注册用户隐藏掉某些模块,让他们连选择显示的机会都没有,该怎么做呢?如露兜博客最近开通了读者投稿功能,投稿者只能填写文章标题和内容,其他的功能如"分类","标签","摘要"等功能一律不提供。我们可以使用WordPress函数remove_meta_box()来实现我们想要的功能。在不考虑用户角色的情况下,可以在主题目录下的functions.php中添加以下php代码:

// hook the admin init
add_action('admin_init','customize_meta_boxes');

function customize_meta_boxes() {
     // 删除以下两个模块categorydiv、tagsdiv-post_tag
     remove_meta_box('categorydiv','post','normal');
     remove_meta_box('tagsdiv-post_tag','post','normal');
}

     这样就删除了名称为 categorydivtagsdiv-post_tag 的模块,也就是分类和标签模块。那怎么知道我要删除的模块名称呢?文章编辑页的源代码中所有class="postbox"对应的id名称就是该模块的名称,如:

<div class="postbox" id="postexcerpt">

     那么这个模块的名称就是postexcerpt,也就是摘要模块,具体你可以使用FireBug看看源代码。以下给出所有模块对应的名称,给大家节省点力气:

  • 分类:categorydiv
  • 标签:tagsdiv-post_tag
  • 摘要:postexcerpt
  • 发送trackbacks:trackbacksdiv
  • 自定义域:postcustom
  • 讨论:commentstatusdiv
  • 作者:authordiv
  • 评论:commentsdiv
  • 文章别名:slugdiv
  • 文章修订版:revisionsdiv

     那要是针对某个用户角色去除某些模块,怎么做呢?我们只要对以上代码,再判断一下用户的等级即可:

//hook the admin init
add_action('admin_init','customize_meta_boxes');

function customize_meta_boxes() {
     //retrieve current user info
     global $current_user;
     get_currentuserinfo();

     //如果当前用户的等级小于3,那么就删除分类和标签模块
     if ($current_user->user_level < 3)
     {
          remove_meta_box('categorydiv','post','normal');
          remove_meta_box('tagsdiv-post_tag','post','normal');
     }
}

     在WordPress后台 - 用户那里,管理员可以查看 / 编辑用户的角色,以下是用户角色和其等级的对应关系:

  • 0 级对应 订阅者
  • 1 级对应 投稿者
  • 2 级对应 作者
  • 3 - 7 级对应 编辑
  • 8 - 10 级对应 管理员

参考文章

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-hiding-post-fields.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

35 条留言

点此留言
  1. frantic frantic

    多用户的设置很受启发,谢谢

  2. 厦门SEO 厦门SEO

    呵呵。。。。我没用。。。。感觉简单的好

  3. 厦门SEO 厦门SEO

    HOHO。。。。其实我最想知道的是WP的转移数据!!!!!!我用几年了都弄不清楚!

    • Ludou

      @厦门SEO phpmyadmin到处数据库,ftp备份全站文件,修改wp-config.php,修改网站地址,一切解决,具体上网搜索:WordPress搬家。一切问题都解决。

      • 厦门SEO 厦门SEO

        @Ludou 哦。。。我貌似是换了环境。。然后文章全部丢失。。。害我全部重新找回。。。我是WIN系统的服务器

        • 厦门SEO 厦门SEO

          @厦门SEO 我文章全部丢失。。。。。然后根据快照全部找回。。。累死了

  4. reizhi reizhi

    这些没太注意过,支持一下

  5. tonjay tonjay

    真没注意过~~~点广告问候博主,嘎嘎

  6. Sunbird Sunbird

    本人技术白痴,学习中。哈

  7. 签名 签名

    啥都不会的菜鸟来过了 呵呵

  8. 软件盒子 软件盒子

    后台的我就不动了

  9. 国庆400电话

    我的网站,pr为2 ,是商业网站,非博客 o 主要是做400电话申请办理业务的,做400免费电话的。要求与贵站做友情链接。如果有意做友情链接,做完我的链接,请QQ联系通知我515246540 china Great Wall of solar energy
    域名是http://shanhairail.inf

    • Ludou

      @国庆400电话 无法访问!

      • 国庆400电话

        @Ludou 可以访问,美国空间。

      • 国庆400电话

        @Ludou 最好是QQ上沟通,我的邮件太多了,每天能收一千多,实在是看不过来,我QQ:515246540,或是你留给我个QQ,谢谢。

  10. DEST

    路过!

  11. sam

    remove_meta_box('commentstatusdiv','post','normal');
    禁用讨论模块,则文章发表后不能评论,相当于禁用了评论,而之前设置的是允许评论。经测试在“显示选项”里面禁用“讨论”同样会禁用评论,不知到博主有无好点的办法禁用讨论模块但允许评论,非常感谢

    • Ludou

      @sam 后台 – 设置 – 讨论,勾选:允许他人发表新文章的评论,在functions.php中加入以下php代码:

      add_action('admin_print_styles', 'hide_commentstatusdiv');

      function hide_commentstatusdiv() {
      $hide_slugs = "<style type=\"text/css\">
      #commentstatusdiv {display: none;}</style>";
      print($hide_slugs);
      }

      • sam sam

        @Ludou 已经按你的方法搞定,谢谢ludou, 最近好像线路抽风严重,页面打开巨慢,放在米国太远了,不过ludou还是挺快

  12. 夏天 夏天

    博主你好,我遇到了你博客中说到的问题。我希望修改默认文章编辑页的布局,让多用户博客所有新加入作者默认的文章编辑页布局满足我的要求。这边文章中只说明了让某些级别用户禁用指定的模块,请问如何修改模块的默认为止,以及让默认不显示的插件变成显示呢?希望给一些提示,非常感谢!

    • Ludou

      @夏天 没用过WordPress的多用户博客功能,所以没法给你提供答案。

  13. 咖啡磊 咖啡磊

    一直在关注露兜的博客,今天看到这个文章的时候,就很好奇,于是做了个测试,比如我想禁用投搞者禁示显示“概况”,伯Firebug查看概况的代码如下:
    <label for="dashboard_right_now-hide">
    <input id="dashboard_right_now-hide" class="hide-postbox-tog" type="checkbox" checked="checked" value="dashboard_right_now" name="dashboard_right_now-hide">
    概况
    </label>
    找到ID选项为dashboard_right_now-hide
    禁用代码写法如下:
    function customize_meta_boxes() {
    //retrieve current user info
    global $current_user;
    get_currentuserinfo();

    //如果当前用户的等级小于3,那么就删除分类和标签模块
    if ($current_user->user_level < 3)
    {
    remove_meta_box('dashboard_right_now-hide','post','normal');
    }
    }
    貌似不起作用,想请教下露兜,这是啥原因呢?

    • Ludou

      @咖啡磊 以上内容只针对文章编辑页生效。如果想去除控制板下的概况框,请看下文的内容:
      https://www.ludou.org/wordpress-customizing-the-dashboard-widgets.html

      至于针对投稿者才禁用,可以使用条件判断:
      ….
      if ($current_user->user_level < 3)
      add_action('wp_dashboard_setup', …
      ….

  14. bestkaola bestkaola

    像我这种不懂技术的,昨天我弄了大半天都没弄好,最后采取最傻瓜的办法,直接删除不想让别人用的页面来达到目的。

  15. 橘子

    楼主 你好!我是wp新手 我今天下载了个模板,我想去除页面里面的评论模块,按你说的方法改了前台设置(去除了评论选项,然后保存)但是预览页面还是存在评论的模块 该怎么解决呢?是什么原因?

    • Ludou

      @橘子 不知道你所说的“你说的方法”是指本文中介绍的内容,还是其他方法?
      既然前台都已经删除了评论模块,那预览那里还有也没多大关系了吧?

  16. 高高 高高

    ludou请教一个问题,我想删除自定义菜单项下面的分类目录、页面模块,但是不知道是哪个函数实现的?

  17. lucien

    ludou,你好!我用上面提到的方法可以移除摘要、文章别名等模块,但是特色图片怎么移都移不掉。
    //hook the admin init
    add_action('admin_init','customize_meta_boxes');

    function customize_meta_boxes() {
    //retrieve current user info
    global $current_user;
    get_currentuserinfo();

    //if level < 3 remove tagsdiv-post_tag
    if ($current_user->user_level < 3)
    {
    remove_meta_box('trackbacksdiv','post','normal');
    remove_meta_box('postexcerpt','post','normal');
    remove_meta_box('formatdiv','post','normal');
    remove_meta_box('postcustom','post','normal');
    remove_meta_box('commentstatusdiv','post','normal');
    remove_meta_box('slugdiv','post','normal');
    remove_meta_box('postimagediv','post','normal');
    }
    }
    能帮我分析一下原因吗?

    • Ludou

      @lucien functions.php中删除类似代码:
      add_theme_support( 'post-thumbnails' );

  18. Qa Qa

    Hi,你好。
    <pre>remove_meta_box('dxseo-meta','post','normal');</pre>
    这是一个seo插件的模块。
    加入了代码是无法删除的。
    可以请教下吗?

  19. xuanxi

    0 级对应 订阅者
    1 级对应 投稿者
    2 – 4 级对应 作者
    5 – 7 级对应 编辑
    8 – 10 级对应 管理员

    3能判断到作者 但是6判断不到编辑 要8才可以 这是为什么了?

    • Ludou

      @xuanxi 新版本的WordPress已经取消数字等级,请使用权限判断:
      http://codex.wordpress.org/Roles_and_Capabilities

      • xuanxi

        @Ludou if(current_user_can('level_10')){} 这样也不可以用了吗?

        <?php if( current_user_can('editor') ) {
        echo '这段文字只会在“编辑”角色登录后显示。';
        }?>

        这样去判断多麻烦,"比如我要判断判断编辑以下用户" 或 "作者以上用户" 没有原来数字方便哦

        • Ludou

          @xuanxi WordPress新版本已经抛弃了数字等级,不然你就用旧版本。详见:
          http://codex.wordpress.org/Roles_and_Capabilities#User_Levels

发表留言