Rimuovere il Metabox della Tassonomia Personalizzata dalla Schermata del Tipo di Post Personalizzato
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!

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

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

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

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.

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

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ò.

(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).

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

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

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.

tagsdiv dovrebbe avere il trattino finale:
remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );

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

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

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
