Entfernen Sie benutzerdefinierte Metaboxen aus benutzerdefinierten Post-Typen

Gibt es eine Möglichkeit, einen benutzerdefinierten Post-Typ in WordPress zu erstellen, der nur die Standardmetaboxen und keine andere Metabox enthält, die von anderen Plugins hinzugefügt wurde?

Die Idee ist, die benutzerdefinierte Post zu verwenden, um ein Plugin zu entwickeln, dieses Plugin muss alle functionen benutzerdefinierte Post-Typ haben, aber mit allen Metaboxen, die Plugin wie all-in-seo hinzufügen.

Ich möchte eine saubere Oberfläche für den Benutzer erstellen und diese zusätzlichen Metaboxen sind im Weg 🙂

Solutions Collecting From Web of "Entfernen Sie benutzerdefinierte Metaboxen aus benutzerdefinierten Post-Typen"

Aus der Spitze meines Kopfes, ohne es tatsächlich zu testen, sollte dies funktionieren. Sie möchten nach is_admin testen, damit der Code nicht am Frontend ausgeführt wird. Testen Sie dann auch, ob der Posttyp dem Slug entspricht. Editiert, weil ich vorher einen dummen Fehler gemacht habe.

Referenzieren Sie diese Seite des Codex: http://codex.wordpress.org/Function_Reference/remove_meta_box

 if( is_admin() ) { remove_meta_box('linktargetdiv', '$posttype', 'normal'); remove_meta_box('linkxfndiv', '$posttype', 'normal'); remove_meta_box('linkadvanceddiv', '$posttype', 'normal'); remove_meta_box('postexcerpt', '$posttype', 'normal'); remove_meta_box('trackbacksdiv', '$posttype', 'normal'); remove_meta_box('postcustom', '$posttype', 'normal'); remove_meta_box('commentstatusdiv', '$posttype', 'normal'); remove_meta_box('commentsdiv', '$posttype', 'normal'); remove_meta_box('revisionsdiv', '$posttype', 'normal'); remove_meta_box('authordiv', '$posttype', 'normal'); remove_meta_box('sqpt-meta-tags', '$posttype', 'normal'); } 

Sie können die beste Antwort hier finden: http://codex.wordpress.org/Function_Reference/remove_meta_box

Bestimmte Meta-Felder können entfernt werden, indem der Datei functions.php in Ihrem WordPress-Thema etwas wie der folgende Code hinzugefügt wird:

 // verstecke bestimmte Meta-Felder auf dem benutzerdefinierten Beitragstyp 'YOUR_CUSTOM_POST_TYPE'
 add_filter ('add_meta_boxes', 'hide_meta_boxes_YOUR_CUSTOM_POST_TYPE');
 function hide_meta_boxes_YOUR_CUSTOM_POST_TYPE () {
     remove_meta_box ('postexcerpt', 'YOUR_CUSTOM_POST_TYPE', 'normal');
     remove_meta_box ('trackbacksdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
     remove_meta_box ('postcustom', 'YOUR_CUSTOM_POST_TYPE', 'normal');
     remove_meta_box ('slugdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
     remove_meta_box ('commentstatusdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
     remove_meta_box ('commentsdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
     remove_meta_box ('revisionsdiv', 'YOUR_CUSTOM_POST_TYPE', 'normal');
 }

Vor allem solltest du es nicht tun. Wenn ein Benutzer andere Plugins installiert hat, ist es, weil er / sie es nicht benutzen möchte, selbst wenn Ihr Plugin alle functionalitäten dieser Plugins bietet, die sagen, dass für die Benutzer Ihr Plugin besser ist als andere?

Und wenn diese Benutzer bereits Tonnen von Einstellungen mit anderen Plugins haben und sehen, dass sie verschwinden, indem Sie Ihr Plugin installieren? Ich wette, dass die Benutzer sofort dein Plugin entfernen (und wenn es möglich ist, werden in diesem Fall sehr niedrige Stimmen kommen).

Bedenken Sie auch, dass ein anderes Plugin die gleiche Technik verwenden kann, um Ihre Metaboxen zu entfernen. An dem anderen Plugin werden die Metaboxen des Plugins entfernt, und so weiter …

Was wird es sein, der Krieg der Metaboxen ?

Mein Vorschlag ist es, Ihre Metaboxen hinzuzufügen und Benutzer entscheiden zu lassen, welche Metaboxen zu verlassen und was zu entfernen (Unistalling-Plugin oder deaktivieren Sie die Metabox von der Registerkarte “Bildschirmhilfe”).

Beachten Sie schließlich, dass Sie Metaboxen eines Plugins nicht entfernen können, wenn Sie die ID dieser Metaboxen nicht kennen. Also, um zu tun, was Sie wollen, sollten Sie alle Ihre ” Konkurrenten ” -Plugins installieren, schauen Sie sich die ID ihrer Metaboxen an und entfernen Sie sie mit remove_meta_box .

Und wenn ein Plugin aktualisiert wird und die ID seiner Metaboxen ändert?

Glaub mir, es ist hart und dreckig, keine Arbeit.

Zusammen mit den anderen Antworten fand ich, dass, wenn Sie Ihren benutzerdefinierten Beitragstyp mit erstellen

 $args = array( ... public => false ... ) 

Einige Metaboxen sind nicht enthalten wie WordPress Seo von Yoast zum Beispiel. Auf meinem Fall im Verwenden der cpt für ein Popup, so dass andere Metaboxen nicht benötigt werden und die cpt nicht benötigt wird, um öffentlich zu sein.