WordPress的文章和页面编辑窗口附带了很多功能模块(Meta Boxes),有些不常用的可以选择屏蔽掉,今天给大家分享如何通过代码屏蔽WordPress文章和页面发布页的Meta Boxes。
移除多余模块
根据个人需求,将下面的代码添加到主题的 functions.php 文件中:
//移除文章编辑界面默认的Meta模块 function remove_my_post_metaboxes() { remove_meta_box( 'authordiv','post','normal' ); // 作者模块 remove_meta_box( 'commentstatusdiv','post','normal' ); // 评论状态模块 remove_meta_box( 'commentsdiv','post','normal' ); // 评论模块 remove_meta_box( 'postcustom','post','normal' ); // 自定义字段模块 remove_meta_box( 'postexcerpt','post','normal' ); // 摘要模块 remove_meta_box( 'revisionsdiv','post','normal' ); // 修订版本模块 remove_meta_box( 'slugdiv','post','normal' ); // 别名模块 remove_meta_box( 'trackbacksdiv','post','normal' ); // 引用模块 remove_meta_box( 'categorydiv','post','normal' ); // 分类模块 remove_meta_box( 'formatdiv','post','normal' ); // 文章格式模块 remove_meta_box( 'submitdiv','post','normal' ); // 发布模块 remove_meta_box( 'tagsdiv-post_tag','post','normal' ); // 标签模块 } add_action('admin_menu','remove_my_post_metaboxes'); //移除文章特色图像模块 add_action('do_meta_boxes', 'remove_thumbnail_box'); function remove_thumbnail_box() { remove_meta_box( 'postimagediv','post','side' ); } //移除页面编辑窗口的模块 function remove_my_page_metaboxes() { remove_meta_box( 'postcustom','page','normal' ); // 自定义字段模块 remove_meta_box( 'postexcerpt','page','normal' ); // 摘要模块 remove_meta_box( 'commentstatusdiv','page','normal' ); // 评论模块 remove_meta_box( 'pageparentdiv','page','normal' ); // 页面属性模块 remove_meta_box( 'slugdiv','page','normal' ); // 别名模块 remove_meta_box( 'authordiv','page','normal' ); // 作者模块 remove_meta_box( 'submitdiv','page','normal' ); // 发布模块 } add_action('admin_menu','remove_my_page_metaboxes'); //移除页面特色图像模块 add_action('do_meta_boxes', 'remove_page_thumbnail_box'); function remove_page_thumbnail_box() { remove_meta_box( 'postimagediv','page','side' ); }
移除自定义模块
以上的代码足够移除WordPress自带的Meta模块了,如果要移除主题或插件创建的Meta模块,我们需要在浏览器中查看这个页面的源代码,找到这个模块对应的ID。从源代码可以看到,“主题自带面板”的ID是 tagsdiv-sitetag,接着在主题中通过 do_meta_boxes 这个add_action 来移除:
//移除特定模块 add_action('do_meta_boxes', 'remove_new_custom_box'); function remove_new_custom_box() { remove_meta_box( 'tagsdiv-sitetag','post','normal' ); }
如果只需要为非管理员移除Meta模块,将下面的代码添加到主题的 functions.php 文件中:
//为非管理员移除文章编辑界面默认的Meta模块 function remove_meta_boxes() { if (!current_user_can('administrator') && !current_user_can('subadmin')) { remove_meta_box( 'authordiv','post','normal' ); // 作者模块 remove_meta_box( 'commentstatusdiv','post','normal' ); // 评论状态模块 remove_meta_box( 'commentsdiv','post','normal' ); // 评论模块 remove_meta_box( 'postcustom','post','normal' ); // 自定义字段模块 remove_meta_box( 'postexcerpt','post','normal' ); // 摘要模块 remove_meta_box( 'revisionsdiv','post','normal' ); // 修订版本模块 remove_meta_box( 'slugdiv','post','normal' ); // 别名模块 remove_meta_box( 'trackbacksdiv','post','normal' ); // 引用模块 remove_meta_box( 'categorydiv','post','normal' ); // 分类模块 remove_meta_box( 'formatdiv','post','normal' ); // 文章格式模块 remove_meta_box( 'submitdiv','post','normal' ); // 发布模块 remove_meta_box( 'tagsdiv-post_tag','post','normal' ); // 标签模块 } } add_action('do_meta_boxes', 'remove_meta_boxes');
注:本文中使用到的一个很重要的函数 remove_meta_box() 包含了 3 个参数:第一个参数是Meta模块的ID,第二个参数是“类型”,比如文章就是“post”,页面就是“page”,第三个参数是“上下文位置”,可选“normal”“advanced”或“side”。
评论列表(1条)
学到了赞一个