1. David Wu首页
  2. WordPress
  3. WordPress安装教程

WordPress 移除 Meta Box 模块的函数:Remove_meta_box()-WordPress开发教程

前段时间群里有个盆友说 wordpress 后台文章或页面编辑界面的作者选项会加载所有的投稿者及以上权限的所有用户的用户名数据,这样就会出现一个问题,如果你的网站有很多的投稿

WordPress移除Meta box模块的函数:remove_meta_box() wordpress

前段时间群里有个盆友说 wordpress 后台文章或页面编辑界面的作者选项会加载所有的投稿者及以上权限的所有用户的用户名数据,这样就会出现一个问题,如果你的网站有很多的投稿者及以上权限的用户,达到了万级呢,那样的话,当你进入文章或页面编辑界面时就会加载非常非常慢的,毕竟加载的数据有点惊人~

所以,今天就来解决这个问题,让其不加载有投稿权限的用户的数据,但在此我介绍一下本文要用到的一个函数先:remove_meta_box()~

描述

可以移除文章、页面编辑界面的 Meta 模块,还可以移除仪表盘的 Meta 模块。

用法

<?php remove_meta_box( $id, $page, $context ); ?>

参数

$Id

(字符串)(必需)所要移除的 Meta 模块的 HTML 的 id 属性。部分可用的 id 如下:

‘authordiv’ – 作者模块
‘categorydiv’ – 分类模块
‘commentstatusdiv’ – 评论状态模块
‘commentsdiv’ – 评论模块
‘formatdiv’ – 文章格式模块
‘pageparentdiv’ – 页面属性模块
‘postcustom’ – 自定义字段模块
‘postexcerpt’ – 摘要模块
‘postimagediv’ – 特色图像模块
‘revisionsdiv’ – 版本模块
‘slugdiv’ – 别名模块
‘submitdiv’ – 发布 模块
‘tagsdiv-post_tag’ – 标签模块
‘trackbacksdiv’ – 发送 trackback 模块

默认值:无

$Page

(字符串)(必需)要从那个编辑界面移除 Meta 模块,可用值:

‘post’ – 文章编辑界面
‘page’ – 页面编辑界面
‘attachment’ – 附件编辑界面
‘link’ – 链接编辑界面
‘dashboard’ – 仪表盘
或者已注册的自定义文章类型的编辑界面,例如 ‘my-product’

默认值:无

$Context

(字符串)(必需)所要删除的 Meta 模块所在的位置,可选值:

‘normal’,
‘advanced’,
‘side’.

默认值:无

示例

对非管理员账户,移除文章和链接编辑界面的某些 Meta 模块:

function my_remove_meta_boxes() {
    if ( ! current_user_can( 'manage_options' ) ) {
        remove_meta_box( 'linktargetdiv', 'link', 'normal' );
        remove_meta_box( 'linkxfndiv', 'link', 'normal' );
        remove_meta_box( 'linkadvanceddiv', 'link', 'normal' );
        remove_meta_box( 'postexcerpt', 'post', 'normal' );
        remove_meta_box( 'trackbacksdiv', 'post', 'normal' );
        remove_meta_box( 'postcustom', 'post', 'normal' );
        remove_meta_box( 'commentstatusdiv', 'post', 'normal' );
        remove_meta_box( 'commentsdiv', 'post', 'normal' );
        remove_meta_box( 'revisionsdiv', 'post', 'normal' );
        remove_meta_box( 'authordiv', 'post', 'normal' );
        remove_meta_box( 'sqpt-meta-tags', 'post', 'normal' );
    }
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );

在文章编辑界面移除自定义字段模块:

function remove_post_custom_fields() {
    remove_meta_box( 'postcustom' , 'post' , 'normal' ); 
}
add_action( 'admin_menu' , 'remove_post_custom_fields' );

在文章编辑界面移除摘要模块:

function remove_page_excerpt_field() {
    remove_meta_box( 'postexcerpt' , 'page' , 'normal' ); 
}
add_action( 'admin_menu' , 'remove_page_excerpt_field' );

在页面编辑界面移除作者、评论状态和评论模块:

function remove_page_fields() {
    remove_meta_box( 'commentstatusdiv' , 'page' , 'normal' ); //removes comments status
    remove_meta_box( 'commentsdiv' , 'page' , 'normal' ); //removes comments
    remove_meta_box( 'authordiv' , 'page' , 'normal' ); //removes author 
}
add_action( 'admin_menu' , 'remove_page_fields' );

如果你想从自定义文章类型中移除某个 Meta 模块,可以参考下面的例子:

function remove_custom_taxonomy()
{
    remove_meta_box($custom_taxonomy_slug.'div', $custom_post_type, 'side' );
 
        // $custom_taxonomy_slug 是自定义Meta模块的别名, 例如 'genre' )
        // $custom_post_type 是自定义文章类型的别名,例如 'movies' )
}
add_action( 'admin_menu', 'remove_custom_taxonomy' );

如果有必要,你甚至可以去除“发布”模块:

function remove_publish_box() {
    remove_meta_box( 'submitdiv', 'custom_post_id', 'side' );
}
add_action( 'admin_menu', 'remove_publish_box' );

从仪表盘中移除所有 Meta 模块,可以使用下面的代码:

function remove_dashboard_widgets(){
    remove_meta_box('dashboard_right_now', 'dashboard', 'normal');   // 概况
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal'); // 近期评论
    remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');  // 链入链接
    remove_meta_box('dashboard_plugins', 'dashboard', 'normal');   // 插件
    remove_meta_box('dashboard_quick_press', 'dashboard', 'side');  // 快速发布
    remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');  // 近期草稿
    remove_meta_box('dashboard_primary', 'dashboard', 'side');   // WordPress blog
    remove_meta_box('dashboard_secondary', 'dashboard', 'side');   // 其它 WordPress 新闻
// 使用 'dashboard-network' 作为第二个参数,可以从多站点网络的仪表盘移除Meta模块
}
add_action('wp_dashboard_setup', 'remove_dashboard_widgets');

最后,在给出本文开头所说的关于“如何不加载有投稿权限的用户数据”的问题的解决方法:

/**
 * WordPress移除Meta box模块的函数:remove_meta_box() - 龙笑天下
 * 去掉文章或页面编辑页面中的作者框
 * https://www.ilxtx.com/wordpress-function-remove-meta-box.html
 */
function lxtx_remove_post_page_fields() {
    remove_meta_box( 'authordiv' , 'post' , 'normal' );
    remove_meta_box( 'authordiv' , 'page' , 'normal' );
}
add_action( 'admin_menu' , 'lxtx_remove_post_page_fields' );

源文件

remove_meta_box() 位于 wp-admin/includes/template.php

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/121844

服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

邮箱地址不会被公开。 必填项已用*标注