删除特定页面的元框

时间:2019-07-16 作者:Sean Vinci

我试图有条件地删除特定页面(或多个特定页面)的“页面属性”元框。例如:

function remove_meta_boxes() {
  if (is_page(\'contact\')) {
    remove_meta_box(\'pageparentdiv\', \'page\', \'side\');
  }
}
add_action( \'admin_menu\', \'remove_meta_boxes\' );
我可以删除所有没有条件语句的页面的页面属性元框,因此该部分可以工作,但添加了is_page() 情况似乎导致remove_meta_box() 代码不起作用。非常感谢您的帮助。

谢谢

1 个回复
SO网友:Howdy_McGee

这个is_page() 条件依赖于global $wp_query WP\\u查询对象,该对象未在编辑帖子页面上设置。不过我们还有其他选择。。。

如果我们知道页面ID,我们可以根据$\\u测试得到:

/**
 * Remove metaboxes
 * 
 * @return void
 */
function wpse343020_remove_meta_boxes() {

    if( isset( $_GET, $_GET[\'post\'] ) && 123 == $_GET[\'post\'] ) {
        remove_meta_box( \'pageparentdiv\', \'page\', \'side\' );
    }

}
add_action( \'admin_menu\', \'wpse343020_remove_meta_boxes\' );
如果您确实需要针对页面标题或页面段塞进行测试,您可以稍后在global $post WP\\U Post对象可用:

/**
 * Remove metaboxes
 * 
 * @return void
 */
function wpse343020_remove_meta_boxes() {

    global $post;

    if( ! empty( $post ) && \'contact\' == $post->post_name ) {
        remove_meta_box( \'pageparentdiv\', \'page\', \'side\' );
    }

}
add_action( \'admin_head\', \'wpse343020_remove_meta_boxes\' );