Rimuovere la tassonomia personalizzata Metabox dalla schermata Tipo di posta personalizzato


15

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

Ho letto rimuovere il metabox del modulo personalizzato di tassonomia personalizzata e come rimuovere un metabox di tassonomia (gerarchico) di tipo categoria? ma sono ancora bloccato.

La funzione che sto usando è:

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 non prefissato post_types e custom_taxonomies, ma il gioco è fatto. Ho provato a usare il admin_menugancio e il add_meta_boxesgancio raccomandato dal Codice. Ho provato entrambi normale sideper il terzo parametro.

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


EDIT: era un refuso nella funzione register_taxonomy. Sono una persona orribile. Grazie a tutti per l'aiuto. Ho ancora imparato alcune cose!


anche con 'show_ui' => false?
JMau,

1
Voglio ancora l'interfaccia utente nel menu, non solo quando modifico un post.
mrwweb,

Risposte:


35

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

Nell'esempio che segue l'impostazione show_uisu falserimuove completamente metabox dalla schermata di modifica, dalla schermata di modifica rapida e dal menu di amministrazione. Ma se si imposta show_uisu trueè possibile ottenere un maggiore controllo sfumato utilizzando quindi gli argomenti show_in_quick_edite meta_box_cb(l'impostazione di later su false nasconde il metabox nella schermata di modifica 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 modulo aggiungi un nuovo tipo di post personalizzato. Grazie.
IT Vlog

Grazie! Stavo cercando 'meta_box_cb' => false per nasconderlo in post-nuovo, dove impostandolo su null viene visualizzata solo la versione wordpress predefinita.
Ryan H

Liscio e semplice.
Travis van der Font,

6

Dici di voler rimuovere le caselle dalla postschermata di modifica, non dalla schermata Tipo di post, quindi supponendo che dovresti essere in grado di registrare la tua tassonomia solo per i tipi di post a cui desideri applicare, ed evitarlo del tutto. L'esempio nel Codex registra la tassonomia di esempio solo per il booktipo di post come:

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 tu stesso le meta box, ovvero queste caselle non sono quelle predefinite, il modo per evitare questo problema è quello di registrare le meta box sugli hook specifici del post-tipo :

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

O per seguire l'esempio sopra:

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

Uno di quegli approcci dovrebbe risolverlo per te. Non penso che dovresti usare remove_meta_boxaffatto.

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

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

Sono abbastanza sicuro che admin_menusia troppo presto, ma non l'ho verificato. add_metaboxesfunziona anche per me. Non so perché non funzioni per te.


Scusa se non sono chiaro. Intendevo la schermata Tipo di post . Ogni tassonomia è registrata solo per un tipo di posta personalizzato. Ho provato ad usare quell'hook add_meta_boxes_ * brevemente ma proverò alcune variazioni su questo (anche se sto usando i metabox generati automaticamente).
mrwweb,

Quindi l'ultima opzione nella risposta dovrebbe farlo. L'ho provato. La scatola va via. Non posso dire di aver capito la logica di avere le tassonomie senza le scatole però.
s_ha_dum,

(Vedi modifica sopra. Era un errore di battitura. È su di me ... Grazie per l'aiuto). Per rispondere alla tua domanda, sto visualizzando le tassonomie con un campo personalizzato avanzato (è un'interfaccia migliore per gli utenti del sito).
mrwweb,

Il tuo ultimo esempio mi ha messo nella giusta direzione, ma questo è ciò che ha funzionato per me: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque,

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

3

Utilizzando ACF per la gestione delle tassonomie personalizzate, i metabox predefiniti non sono necessari. 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à inferiore (100) consente a questo codice di funzionare anche se le tassonomie vengono create da un plug-in come l'interfaccia utente CPT.


tagsdiv dovrebbe avere un seguito -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.