从管理中的特定页面模板中删除Metabox

时间:2012-11-29 作者:Xav

当用户在管理中编辑特定页面时,我想通过编程删除一些元框。页面本身使用的是一个模板(tpl about.php)。我知道我可以使用此功能从所有页面中删除所有元框:

function remove_post_meta_boxes() {
 if(!current_user_can(\'administrator\')) {
  remove_meta_box(\'tagsdiv-post_tag\', \'post\', \'normal\');
  remove_meta_box(\'categorydiv\', \'post\', \'normal\');
  remove_meta_box(\'postimagediv\', \'post\', \'normal\');
  remove_meta_box(\'authordiv\', \'post\', \'normal\');
  remove_meta_box(\'postexcerpt\', \'post\', \'normal\');
  remove_meta_box(\'trackbacksdiv\', \'post\', \'normal\');
  remove_meta_box(\'commentstatusdiv\', \'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(\'slugdiv\', \'post\', \'normal\');
 }
}
add_action( \'admin_menu\', \'remove_post_meta_boxes\' );
但我只需要为特定页面执行此操作。那么,我如何测试管理中显示的模板呢?

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

这是两件不同的事情:

仅在一个页面中隐藏仅当页面使用特定模板时隐藏Case 1 - 在此示例中,页面ID为3, 但请注意,删除是为了pagepost 相似:

add_action( \'admin_menu\', \'remove_post_meta_boxes\' );

function remove_post_meta_boxes() 
{
    if( isset( $_GET[\'post\'] ) && $_GET[\'post\'] == \'3\' ) 
    {
        remove_meta_box(\'tagsdiv-post_tag\', \'post\', \'normal\');
        remove_meta_box(\'categorydiv\', \'post\', \'normal\');
        remove_meta_box(\'postimagediv\', \'post\', \'normal\');
        remove_meta_box(\'authordiv\', \'post\', \'normal\');
        remove_meta_box(\'authordiv\', \'page\', \'normal\');
        remove_meta_box(\'postexcerpt\', \'post\', \'normal\');
        remove_meta_box(\'trackbacksdiv\', \'post\', \'normal\');
        remove_meta_box(\'commentstatusdiv\', \'post\', \'normal\');
        remove_meta_box(\'commentstatusdiv\', \'page\', \'normal\');
        remove_meta_box(\'postcustom\', \'post\', \'normal\');
        remove_meta_box(\'postcustom\', \'page\', \'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(\'authordiv\', \'page\', \'normal\');
        remove_meta_box(\'slugdiv\', \'post\', \'normal\');
        remove_meta_box(\'slugdiv\', \'page\', \'normal\');
    }
}
<小时>Case 2 - 更为复杂,因为它需要实时监听模板下拉框中的更改。

此问题(&;A有这样做的蓝图:Custom meta box shown when template is chosen

结束