So zeigen Sie ein benutzerdefiniertes Meta-Feld nur für bestimmte Seiten-IDs an

Ich benutze Magic Fields 2 für benutzerdefinierte Metaboxen und benutzerdefinierte Felder, aber diese Situation bezieht sich auf jede Metabox.

Ich habe eine benutzerdefinierte Meta-Box, die ich nur auf 3 spezifischen Seiten-IDs anzeigen möchte.

function mf_1_remove_meta_boxes() { if( !in_array($_GET['post'], array('194','185','2') ) ): remove_meta_box( 'mf_1', 'page', 'normal' ); } 

AKTUALISIEREN

Mit Bainternets Lösung funktioniert der Code. Davon abgesehen wurde ein neues Problem sichtbar. Wenn eine neue Seite erstellt wird, ist das Metabox sofort sichtbar und verschwindet dann, sobald die Seite gespeichert wird, da die ID nicht mit einer angegebenen ID übereinstimmt.

UPDATE 2

Der obige Code wurde geändert, um das Problem zu beheben, indem das Meta-Feld auf einer neuen (nicht gespeicherten) Seite angezeigt wird. Es wurde auch zu einem vollständigen und funktionierenden Code modifiziert. Die Meta-Box wird für alle Benutzer entfernt.

So entfernen Sie die Metabox für alle außer Administratoren:

 function mf_1_remove_meta_boxes() { if( !is_admin()) return; if( !in_array($_GET['post'], array('194','185','2') ) ): remove_meta_box( 'mf_1', 'page', 'normal' ); } 

Solutions Collecting From Web of "So zeigen Sie ein benutzerdefiniertes Meta-Feld nur für bestimmte Seiten-IDs an"

Eine einfache und sauberere Lösung wäre die Verwendung! In_array ex:

 function mf_1_remove_meta_boxes() { if( !is_admin() && !isset( $_GET['post'] ) ) return; if( !in_array($_GET['post'], array('194','185','2') ) ) remove_meta_box( 'mf_1', 'page', 'normal' ); } 

Auf diese Weise können Sie einfach die IDs im Array und beliebig viele hinzufügen

Versuchen:

if($_GET['post'] != 194 || $_GET['post'] != 185 || $_GET['post'] != 2)

Es sollte so funktionieren.