Entfernen Sie die Metabox aus der spezifischen Seitenvorlage in admin

Ich möchte programmatisch einige Metaboxen entfernen, wenn ein Benutzer eine bestimmte Seite im Admin bearbeitet. Die Seite selbst verwendet eine Vorlage (tpl-about.php). Ich weiß, dass ich alle Meta-Boxen von allen Seiten mit dieser function entfernen kann:

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' ); 

Aber ich muss das nur für eine bestimmte Seite tun. Wie kann ich testen, welche Vorlage im Admin angezeigt wird?

Solutions Collecting From Web of "Entfernen Sie die Metabox aus der spezifischen Seitenvorlage in admin"

Das sind 2 verschiedene Dinge:

  1. Verstecken Sie nur in einer Seite
  2. Nur ausblenden, wenn Seite eine bestimmte Vorlage verwendet

Fall 1 – in diesem Beispiel ist die page ID 3 , aber beachten Sie, dass die Entfernungen für page und post gleich sind:

 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'); } } 

Fall 2 – ist komplexer, da es in Echtzeit auf Änderungen in der Dropbox “Vorlage” wartet.

Diese Frage- und Antwortliste enthält hierfür einen Plan: Bei Auswahl der Vorlage wird eine benutzerdefinierte Metabox angezeigt