Remove WordPress Meta Boxes
您必须使用调用的函数
remove meta box
.
Description:从给定帖子类型的特定帖子编辑屏幕中删除元框或任何其他元素。它还可以用于从仪表板屏幕中删除小部件。
从WordPress仪表板中删除元框的步骤:
当删除WordPress元框时,我看到它以多种不同的方式完成,其中两种通常是通过JavaScript完成的。虽然这对许多人来说都很有用,但客户端解决方案并不总是很好,尤其是在与可访问性相关的时候。
最重要的是,通过JavaScript隐藏东西是一种黑客行为——元素的可见性通常应该根据CSS设置,当DOM加载时元素被隐藏时,它可能会引起一点闪烁。
总之,我经常看到的两种方法是:
开发人员在屏幕选项下查找复选框,然后触发click事件。
开发人员嗅出元框ID,然后使用jQuery’s hide()
方法从页面隐藏元框。
当然,这些都是可行的,但您仍然面临着可访问性的挑战,并且您正在修改一些可能应该通过CSS完成的内容。
除非有挂钩。
这正是我们作为WordPress开发人员在试图在仪表板和前端引入、删除或修改任何与WordPress相关的内容时应该具备的心态。
具体而言,我们需要问问自己:
考虑到我需要做的事情,是否有一个钩子可以实现这一点?
这就是这种情况(很多很多情况下),有。我们可以利用default_hidden_meta_boxes
钩
Using The Hook
该函数接受两个参数:
应隐藏的元框数组当前显示的屏幕允许我们修改现有的隐藏元框数组(或创建我们自己的),并仅在特定屏幕上触发它。
假设我们有一个自定义的post类型acme_post_type
我们想隐藏类别、作者、文章摘录和Slug元框。
<?php
add_action( \'default_hidden_meta_boxes\', \'acme_remove_meta_boxes\', 10, 2 );
/**
* Removes the category, author, post excerpt, and slug meta boxes.
*
* @since 1.0.0
*
* @param array $hidden The array of meta boxes that should be hidden for Acme Post Types
* @param object $screen The current screen object that\'s being displayed on the screen
* @return array $hidden The updated array that removes other meta boxes
*/
function acme_remove_meta_boxes( $hidden, $screen ) {
if ( \'acme_post_type\' == $screen->id ) {
$hidden = array(
\'acme_post_type_categorydiv\',
\'authordiv\',
\'postexcerpt\',
\'slugdiv\'
);
}
return $hidden;
}
首先,代码检查是否在屏幕上显示自定义帖子类型。如果是这样,那么我们定义一个新的数组,其中包含要隐藏的元框的ID。之后,我们将数组转换为WordPress,函数的最终结果是指定的元框将从视图中隐藏。
在获取要隐藏的元框的ID方面,可以使用首选浏览器的开发人员工具检查页面上的元素。
如何在WordPress中删除元框的另一个示例。
// REMOVE POST META BOXES
function remove_my_post_metaboxes() {
remove_meta_box( \'authordiv\',\'post\',\'normal\' ); // Author Metabox
remove_meta_box( \'commentstatusdiv\',\'post\',\'normal\' ); // Comments Status Metabox
remove_meta_box( \'commentsdiv\',\'post\',\'normal\' ); // Comments Metabox
remove_meta_box( \'postcustom\',\'post\',\'normal\' ); // Custom Fields Metabox
remove_meta_box( \'postexcerpt\',\'post\',\'normal\' ); // Excerpt Metabox
remove_meta_box( \'revisionsdiv\',\'post\',\'normal\' ); // Revisions Metabox
remove_meta_box( \'slugdiv\',\'post\',\'normal\' ); // Slug Metabox
remove_meta_box( \'trackbacksdiv\',\'post\',\'normal\' ); // Trackback Metabox
}
add_action(\'admin_menu\',\'remove_my_post_metaboxes\');
将以下代码放在函数文件中
(Appearance > Editor > Theme Functions – functions.php)
.
放置该代码应该会删除帖子编辑器下面的所有元框,并给你一个漂亮、干净的外观。