正如@Milo指出的,当您在OP中使用代码时$post_types
在函数中未定义,因此WordPress将像根本不存在一样运行。
但是,这意味着您使用的是一个未定义的变量,如果turn WP_DEBUG
on 你会看到一个警告,这样你就可以注意到你做错了什么。
这就是你always 应在启用调试的情况下进行开发。
关于您的问题,确实运行foreach可以是一个解决方案,但在您的情况下不需要,原因是\'do_meta_boxes\'
hook pass screen id (即post类型名称)作为参数,因此您可以使用它删除和添加元数据库。
add_action(\'do_meta_boxes\', \'batteryboys_reorder_meta_boxes\', 1);
function batteryboys_reorder_meta_boxes($screen){
if ($screen === \'dashboard\') return;
remove_meta_box( \'revisionsdiv\', $screen, \'normal\' );
add_meta_box(
\'revisionsdiv\', __(\'Revisions\'), \'post_revisions_meta_box\', $screen, \'normal\', \'low\'
);
}