WordPress文章编辑页删除相关模块
在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');
}
这样就删除了名称为 categorydiv 和 tagsdiv-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 级对应 管理员
参考文章
- User Levels
- Roles and Capabilities
- Function Reference/remove meta box
- Advanced Power Tips for WordPress Template Developers: Reloaded
-- 完 --
本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-hiding-post-fields.html
多用户的设置很受启发,谢谢
呵呵。。。。我没用。。。。感觉简单的好
HOHO。。。。其实我最想知道的是WP的转移数据!!!!!!我用几年了都弄不清楚!
@厦门SEO phpmyadmin到处数据库,ftp备份全站文件,修改wp-config.php,修改网站地址,一切解决,具体上网搜索:WordPress搬家。一切问题都解决。
@Ludou 哦。。。我貌似是换了环境。。然后文章全部丢失。。。害我全部重新找回。。。我是WIN系统的服务器
@厦门SEO 我文章全部丢失。。。。。然后根据快照全部找回。。。累死了
这些没太注意过,支持一下
真没注意过~~~点广告问候博主,嘎嘎
本人技术白痴,学习中。哈
啥都不会的菜鸟来过了 呵呵
后台的我就不动了
我的网站,pr为2 ,是商业网站,非博客 o 主要是做400电话申请办理业务的,做400免费电话的。要求与贵站做友情链接。如果有意做友情链接,做完我的链接,请QQ联系通知我515246540 china Great Wall of solar energy
域名是http://shanhairail.inf
@国庆400电话 无法访问!
@Ludou 可以访问,美国空间。
@Ludou 最好是QQ上沟通,我的邮件太多了,每天能收一千多,实在是看不过来,我QQ:515246540,或是你留给我个QQ,谢谢。
路过!
remove_meta_box('commentstatusdiv','post','normal');
禁用讨论模块,则文章发表后不能评论,相当于禁用了评论,而之前设置的是允许评论。经测试在“显示选项”里面禁用“讨论”同样会禁用评论,不知到博主有无好点的办法禁用讨论模块但允许评论,非常感谢
@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);
}
@Ludou 已经按你的方法搞定,谢谢ludou, 最近好像线路抽风严重,页面打开巨慢,放在米国太远了,不过ludou还是挺快
博主你好,我遇到了你博客中说到的问题。我希望修改默认文章编辑页的布局,让多用户博客所有新加入作者默认的文章编辑页布局满足我的要求。这边文章中只说明了让某些级别用户禁用指定的模块,请问如何修改模块的默认为止,以及让默认不显示的插件变成显示呢?希望给一些提示,非常感谢!
@夏天 没用过WordPress的多用户博客功能,所以没法给你提供答案。
一直在关注露兜的博客,今天看到这个文章的时候,就很好奇,于是做了个测试,比如我想禁用投搞者禁示显示“概况”,伯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');
}
}
貌似不起作用,想请教下露兜,这是啥原因呢?
@咖啡磊 以上内容只针对文章编辑页生效。如果想去除控制板下的概况框,请看下文的内容:
https://www.ludou.org/wordpress-customizing-the-dashboard-widgets.html
至于针对投稿者才禁用,可以使用条件判断:
….
if ($current_user->user_level < 3)
add_action('wp_dashboard_setup', …
….
像我这种不懂技术的,昨天我弄了大半天都没弄好,最后采取最傻瓜的办法,直接删除不想让别人用的页面来达到目的。
楼主 你好!我是wp新手 我今天下载了个模板,我想去除页面里面的评论模块,按你说的方法改了前台设置(去除了评论选项,然后保存)但是预览页面还是存在评论的模块 该怎么解决呢?是什么原因?
@橘子 不知道你所说的“你说的方法”是指本文中介绍的内容,还是其他方法?
既然前台都已经删除了评论模块,那预览那里还有也没多大关系了吧?
ludou请教一个问题,我想删除自定义菜单项下面的分类目录、页面模块,但是不知道是哪个函数实现的?
@高高 抱歉,不清楚
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');
}
}
能帮我分析一下原因吗?
@lucien functions.php中删除类似代码:
add_theme_support( 'post-thumbnails' );
Hi,你好。
<pre>remove_meta_box('dxseo-meta','post','normal');</pre>
这是一个seo插件的模块。
加入了代码是无法删除的。
可以请教下吗?
0 级对应 订阅者
1 级对应 投稿者
2 – 4 级对应 作者
5 – 7 级对应 编辑
8 – 10 级对应 管理员
3能判断到作者 但是6判断不到编辑 要8才可以 这是为什么了?
@xuanxi 新版本的WordPress已经取消数字等级,请使用权限判断:
http://codex.wordpress.org/Roles_and_Capabilities
@Ludou if(current_user_can('level_10')){} 这样也不可以用了吗?
<?php if( current_user_can('editor') ) {
echo '这段文字只会在“编辑”角色登录后显示。';
}?>
这样去判断多麻烦,"比如我要判断判断编辑以下用户" 或 "作者以上用户" 没有原来数字方便哦
@xuanxi WordPress新版本已经抛弃了数字等级,不然你就用旧版本。详见:
http://codex.wordpress.org/Roles_and_Capabilities#User_Levels