it-swarm.com.de

Entfernen Sie Custom Taxonomy Metabox aus dem Bildschirm Custom Post Type

Ich habe zwei hierarchische benutzerdefinierte Taxonomien, die sich jeweils auf einen entsprechenden benutzerdefinierten Beitragstyp beziehen. Ich möchte die Metabox für jeden Beitragstyp auf dem Bearbeitungsbildschirm des Beitragstyps entfernen.

Ich habe gelesen Benutzerdefinierte Taxonomie-Metabox aus benutzerdefiniertem Beitragstyp entfernen und Wie entferne ich eine (hierarchische) Taxonomie-Metabox im Kategoriestil? aber ich stecke immer noch fest.

Die Funktion, die ich benutze, ist:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

Ich habe die post_types und custom_taxonomies nicht korrigiert, aber das war's. Ich habe versucht, den admin_menu-Hook und den vom Codex empfohlenen add_meta_boxes-Hook zu verwenden. Ich habe sowohl normal als auch side für den dritten Parameter ausprobiert.

Die obige Funktion befindet sich in einer mu-plugins-Datei unter der Funktion, mit der die Beitragstypen und Taxonomien registriert werden.


EDIT: Es war ein Tippfehler in der Funktion register_taxonomy. Ich bin eine schreckliche Person. Danke an alle für die Hilfe. Ich habe noch ein paar Sachen gelernt!

10
mrwweb

Wenn Sie Ihre benutzerdefinierte Taxonomie manuell über register_taxonomy registrieren, können Sie Argumente übergeben, um zu steuern, wo die Metabox angezeigt wird.

Wenn Sie im folgenden Beispiel show_ui auf false setzen, wird die Metabox vollständig aus dem Bearbeitungsbildschirm, dem Schnellbearbeitungsbildschirm und dem Admin-Menü entfernt. Wenn Sie jedoch show_ui auf true setzen, können Sie eine differenziertere Steuerung erzielen, indem Sie die Argumente show_in_quick_edit und meta_box_cb verwenden (wenn Sie später auf false setzen, wird die Metabox auf dem CPT-Bearbeitungsbildschirm wie gewünscht ausgeblendet).

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);
26
locomo

Sie sagen, Sie möchten die Kästchen aus dem Bearbeitungsbildschirm für post entfernen, nicht aus dem Bildschirm für den Beitragstyp, und gehen daher davon aus, dass Sie in der Lage sein sollten, Ihre Taxonomie zu registrieren nur für die Beitragstypen, auf die sie angewendet werden soll, und dies vermeiden insgesamt. Das Beispiel im Codex registriert die Beispieltaxonomie nur für den Beitragstyp book wie folgt:

register_taxonomy( 'genre', array( 'book' ), $args );

Ich denke, das ist, was Sie tun müssen, aber Sie haben keinen Registrierungscode für die Beitragstypen oder Taxonomien veröffentlicht.

Wenn Sie die Meta-Boxen selbst erstellt haben - das heißt, diese Boxen sind nicht die Standard-Boxen -, können Sie dieses Problem vermeiden, indem Sie die Meta-Boxen an den posttypspezifischen Hooks registrieren:

do_action('add_meta_boxes_' . $post_type, $post);

Oder folgen Sie dem obigen Beispiel:

add_action('add_meta_boxes_book', 'your-box-callback');

Einer dieser Ansätze sollte dies für Sie lösen. Ich denke nicht, dass Sie remove_meta_box überhaupt verwenden müssen.

Wenn Sie versuchen, die Meta-Boxen aus dem Beitragstyp zu entfernen, für den sie registriert sind, funktioniert dies (ebenfalls gemäß dem Beispiel im Codex):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

Ich bin mir ziemlich sicher, dass admin_menu zu früh ist, habe das aber nicht überprüft. add_metaboxes funktioniert auch bei mir. Ich weiß nicht, warum es bei dir nicht funktioniert.

5
s_ha_dum

Bei Verwendung von ACF für die Verwaltung benutzerdefinierter Taxonomien sind die Standardmetaboxen nicht erforderlich. Ich habe diesen Code erfolgreich ausprobiert:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

Die niedrigere Priorität (100) lässt diesen Code auch dann funktionieren, wenn die Taxonomien von einem Plugin wie CPT-UI erstellt werden.

0
fabiodipa