it-swarm.com.de

Entfernen Sie benutzerdefinierte Metaboxes aus benutzerdefinierten Beitragstypen

Gibt es eine Möglichkeit, in WordPress einen benutzerdefinierten Beitragstyp zu erstellen, der nur die Standard-Metaboxen und keine anderen Metaboxen enthält, die von anderen Plugins hinzugefügt wurden?.

Die Idee ist, den benutzerdefinierten Beitrag zu verwenden, um ein Plugin zu entwickeln. Dieses Plugin muss alle Funktionen des benutzerdefinierten Beitragstyps enthalten, jedoch mit allen Metaboxen, die das Plugin wie All-in-Seo hinzufügt.

Ich möchte eine saubere Oberfläche für den Benutzer erstellen und diese zusätzlichen Metaboxen stehen im Weg :-)

3
Bob Tolbert

Ohne es wirklich zu testen, sollte das funktionieren. Sie möchten auf is_admin testen, damit wir den Code nicht auf dem Front-End ausführen, sondern auch testen, ob der Post-Typ seinem Slug entspricht. Bearbeitet, weil ich vorher einen dummen Fehler gemacht habe.

Verweisen Sie auf 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');
}
4

Die beste Antwort finden Sie hier: http://codex.wordpress.org/Function_Reference/remove_meta_box

Bestimmte Meta-Boxen können entfernt werden, indem Sie der Datei functions.php in Ihrem WordPress-Theme den folgenden Code hinzufügen:

 // bestimmte Meta-Felder in der benutzerdefinierten Beitragsart "YOUR_CUSTOM_POST_TYPE" ausblenden 
 add_filter ('add_meta_boxes', '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_PUSTA_POST_POST_ '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'); 
} 
2
sanchu

Zuallererst solltest du es nicht tun. Wenn ein Benutzer andere Plugins installiert hat, liegt es daran, dass er es nicht verwenden möchte, auch wenn Ihr Plugin alle Funktionen dieser Plugins bietet. Wer sagt, dass Ihr Plugin für den Benutzer besser ist als andere?

Und wenn diese Benutzer bereits unzählige Einstellungen mit anderen Plugins haben und diese verschwinden, wenn Sie Ihr Plugin installieren? Ich wette, dass Benutzer Ihr Plugin sofort deinstallieren (und wenn die Möglichkeit besteht, werden sehr niedrige Stimmen in diesem Fall abgegeben).

Bedenken Sie auch, dass ein anderes Plugin dieselbe Technik zum Entfernen Ihrer Metaboxen verwenden kann. Ein anderes Plugin entfernt die Metaboxen dieses Plugins und so weiter ...

Was wird es sein, der Krieg der Metaboxen ?

Mein Vorschlag ist, Ihre Metaboxen hinzuzufügen und die Benutzer entscheiden zu lassen, welche Metaboxen übrig bleiben und welche entfernt werden sollen (Deaktivieren des Plugins oder Deaktivieren der Metabox auf der Registerkarte "Bildschirmhilfe").

Beachten Sie schließlich, dass Sie die Metaboxen eines Plugins nicht entfernen können, wenn Sie die ID dieser Metaboxen nicht kennen. Um zu tun, was Sie wollen, sollten Sie alle Ihre " Konkurrenten " - Plugins installieren, die ID ihrer Metaboxen überprüfen und sie mit remove_meta_box entfernen.

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

Glauben Sie mir, es ist eine harte, schmutzige Arbeit ohne Nutzen.

0
gmazzap

Zusammen mit den anderen Antworten stellte ich fest, dass Sie Ihren benutzerdefinierten Beitragstyp mit erstellen

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

Einige Metaboxen, wie beispielsweise Wordpress Seo von Yoast, werden nicht berücksichtigt. In meinem Fall verwende ich das cpt für ein Popup, so dass keine anderen Metaboxen benötigt werden und das cpt nicht öffentlich sein muss.

0
chifliiiii