我可以使用此功能禁用在站点范围内拖动元数据库:
function disable_drag_metabox() {
wp_deregister_script(\'postbox\');
}
add_action( \'admin_init\', \'disable_drag_metabox\' );
但我只想在自定义帖子类型上使用它。我尝试了通常的方法:
function disable_drag_metabox() {
global $current_screen;
if( \'event\' == $current_screen->post_type ) wp_deregister_script(\'postbox\');
}
add_action( \'admin_init\', \'disable_drag_metabox\' );
还有这个:
function disable_drag_metabox() {
$screen = get_current_screen();
if( in_array( $screen->id, array( \'event\' ) ) ) {
wp_deregister_script(\'postbox\');
}
}
add_action( \'admin_init\', \'disable_drag_metabox\' );
遗憾的是,它不起作用。我做错了什么?自定义帖子类型称为事件。
最合适的回答,由SO网友:Nathan Johnson 整理而成
当前屏幕未在上设置admin_init
钩这就是为什么global $current_screen
和get_current_screen()
不要工作。
每个管理页面都有一个load-something
设置当前屏幕后激发的挂钩。既然您说这是针对事件自定义帖子类型,那么应该使用load-post.php
钩因此,您的代码如下所示:
function disable_drag_metabox() {
if( \'events\' === get_current_screen()->post_type ) {
wp_deregister_script( \'postbox\' );
}
}
add_action( \'load-post.php\', \'disable_drag_metabox\' );
您可以使用
Query Monitor 插件,以确定每个页面上的钩子和顺序。它还做很多其他的烹饪工作。