Rimuovere il Metabox della Tassonomia Personalizzata dalla Schermata del Tipo di Post Personalizzato

11 giu 2013, 21:49:27
Visualizzazioni: 30K
Voti: 22

Ho due tassonomie personalizzate gerarchiche, ciascuna su un tipo di post personalizzato corrispondente. Vorrei rimuovere il metabox per ciascuna di esse dalla schermata di modifica del tipo di post.

Ho letto rimuovere il metabox della tassonomia personalizzata dal tipo di post personalizzato e Come rimuovere un metabox di tassonomia di stile Categoria (gerarchica)? ma sono ancora bloccato.

La funzione che sto utilizzando è:

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

Ho rimosso i prefissi dai post_types e dalle custom_taxonomies, ma questo è tutto. Ho provato a utilizzare sia l'hook admin_menu che l'hook add_meta_boxes raccomandato dal Codex. Ho provato sia normal che side come terzo parametro.

La funzione di cui sopra si trova in un file mu-plugins sotto la funzione che registra i tipi di post e le tassonomie.


MODIFICA: Era un errore di battitura nella funzione register_taxonomy. Sono una persona orribile. Grazie a tutti per l'aiuto. Ho comunque imparato qualcosa!

2
Commenti

anche con 'show_ui' => false?

JMau JMau
11 giu 2013 21:59:45

Voglio ancora l'interfaccia utente nel menu, solo non quando modifico un articolo.

mrwweb mrwweb
12 giu 2013 00:23:23
Tutte le risposte alla domanda 5
3
68

Se stai registrando manualmente la tua tassonomia personalizzata tramite register_taxonomy, puoi passare argomenti per controllare dove appare il metabox.

Nell'esempio seguente, impostando show_ui su false rimuoveresti completamente il metabox dalla schermata di modifica, dalla modifica rapida e dal menu di amministrazione. Ma se imposti show_ui su true, puoi ottenere un controllo più preciso utilizzando poi gli argomenti show_in_quick_edit e meta_box_cb (impostando quest'ultimo su false nascondi il metabox nella schermata di modifica del CPT come desiderato).

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 gen 2016 20:45:10
Commenti

Funziona. Mantieni il menu di amministrazione e rimuovi la tassonomia personalizzata nel form di aggiunta nuovo per il tipo di post personalizzato. Grazie.

Dũng IT Dũng IT
10 giu 2016 13:01:47

Grazie! Stavo cercando 'meta_box_cb'=>false per nasconderlo in post-new, dove impostarlo a null mostra solo la versione predefinita di WordPress.

Ryan H Ryan H
1 apr 2017 16:15:31

Fluido e semplice.

Travis van der Font Travis van der Font
6 set 2018 12:45:08
5

Tu dici che vuoi rimuovere i box dalla schermata di modifica del post, non dalla schermata del tipo di post, quindi supponendo che dovresti essere in grado di registrare la tua tassonomia solo per i tipi di post a cui vuoi che si applichi, evitando così del tutto questo problema. L'esempio nel Codex registra la tassonomia di esempio solo per il tipo di post book in questo modo:

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

Penso che questo sia ciò che devi fare, ma non hai pubblicato alcun codice di registrazione per i tipi di post o le tassonomie.

Se hai creato i meta box tu stesso—cioè, questi box non sono quelli predefiniti—allora il modo per evitare questo problema è registrare i meta box sugli hook specifici per il tipo di post:

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

Oppure seguendo l'esempio precedente:

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

Uno di questi approcci dovrebbe risolvere il problema per te. Non penso che tu debba usare remove_meta_box affatto.

Se stai cercando di rimuovere i meta box dal tipo di post a cui sono registrati, questo funziona (seguendo ancora l'esempio nel Codex):

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

Sono abbastanza sicuro che admin_menu sia troppo presto, ma non l'ho verificato. add_metaboxes funziona anche per me. Non so perché non funzioni per te.

11 giu 2013 22:19:36
Commenti

Scusa se non sono stato chiaro. Mi riferivo alla schermata del Post Type. Ogni tassonomia è registrata solo per un tipo di post personalizzato. Ho provato brevemente a usare quell'hook add_meta_boxes_* ma proverò alcune varianti (anche se sto usando le metabox generate automaticamente).

mrwweb mrwweb
12 giu 2013 00:25:52

Allora l'ultima opzione nella risposta dovrebbe funzionare. L'ho testato. La box scompare davvero. Non posso dire di capire la logica di avere le tassonomie senza le box però.

s_ha_dum s_ha_dum
12 giu 2013 00:28:48

(Vedi modifica sopra. Era un errore di battitura. Colpa mia... Grazie per l'aiuto). Per rispondere alla tua domanda, sto visualizzando le tassonomie con un Advanced Custom Field (è un'interfaccia migliore per gli utenti del sito).

mrwweb mrwweb
12 giu 2013 00:34:00

Il tuo ultimo esempio mi ha messo sulla strada giusta, ma ecco cosa ha funzionato per me: add_action( 'admin_menu', 'remove_taxonomies_metaboxes' );

Marcos Buarque Marcos Buarque
12 dic 2017 19:12:24

Ho scoperto che questa sintassi non funziona con la versione attuale di WordPress, controlla questa risposta per una soluzione funzionante.

Davey Davey
2 mag 2018 12:06:36
3

Le tassonomie registrano una meta_box di default utilizzando un ID tagsdiv-xxx. Utilizzando ACF per la gestione delle tassonomie personalizzate, le metabox predefinite diventano superflue. Ho provato, con successo, questo codice:

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

La priorità più bassa (100) permette a questo codice di funzionare anche se le tassonomie sono create da un plugin come CPT-UI.

12 mar 2018 12:07:37
Commenti

tagsdiv dovrebbe avere il trattino finale:

remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );

Greg Haygood Greg Haygood
2 ago 2019 04:33:26

Questo non funziona più in Gutenberg.

Sudar Sudar
19 nov 2020 10:13:30

A partire da WordPress 5.6, 'tagsdiv-' non è più valido. Usa la seguente combinazione per creare l'id corrispondente: remove_meta_box( $taxonomy . 'div', $post_type, 'side' );

Talha Imam Talha Imam
23 feb 2021 16:05:28
0

Prova questo oppure aggiungi 'meta_box_cb' => false ai tuoi $args in register_taxonomy

add_action('init', function () {
    register_taxonomy('your_taxonomy', 'your_post_type', [
        'labels' => [
            // opzioni per le etichette
        ],
        // altre opzioni
        'show_ui' => true,
        'show_in_quick_edit' => false,
        'meta_box_cb' => false,        // aggiungi solo questa riga
    ]);
});
8 feb 2024 14:52:26
1

Ho provato le soluzioni sopra indicate per nascondere la tassonomia ma non hanno funzionato per me. Alla fine, ho trovato una soluzione.

Aggiungi questo codice nel file functions.php del tuo tema.

function Cc_Gutenberg_Register_files() 
{
    //file script personalizzato
    wp_register_script(
        'cc-block-script',
        get_stylesheet_directory_uri() .'/js/block-script.js',
        array( 'wp-blocks', 'wp-edit-post' )
    );
    // registra lo script del block editor
    register_block_type( 'cc/ma-block-files', array(
        'editor_script' => 'cc-block-script'
    ) );     
}
add_action('init', 'Cc_Gutenberg_Register_files');

Per block-script.js, puoi utilizzare questo codice.

wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'taxonomy-panel-category' ) ; // Nasconde la Categoria predefinita
wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'taxonomy-panel-TAXONOMY-NAME' ) ; //Nasconde la Tassonomia Personalizzata
9 nov 2021 07:26:04
Commenti

remove_meta_box( $id, $screen, $context ) rimuove effettivamente le metabox dalla schermata dell'editor "classico"; non funziona per l'editor a blocchi Gutenberg.

La tua soluzione è corretta per rimuovere le metabox delle tassonomie dall'editor a blocchi.

Questo è menzionato qui: https://developer.wordpress.org/reference/functions/remove_meta_box/#comment-5005

Pea Pea
5 set 2023 07:10:29