Remover Metabox Custom Taxonomy da tela Custom Post Type


15

Eu tenho duas taxonomias personalizadas hierárquicas, cada uma em um tipo de postagem personalizada correspondente. Gostaria de remover o metabox de cada um na tela de edição do tipo de postagem.

Eu li remover o tipo de postagem personalizada do formulário da metabox de taxonomia personalizada e Como você remove uma metabox (hierárquica) de taxonomia no estilo de categoria? mas ainda estou preso.

A função que estou 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' );

Eu pré-fixei os post_types e custom_taxonomies, mas é isso. Eu tentei usar o admin_menugancho e o add_meta_boxesgancho recomendados pelo Codex. Eu tentei ambos normale sidepara o terceiro parâmetro.

A função acima está localizada em um mu-pluginsarquivo abaixo da função que registra os tipos de post e taxonomias.


EDIT: Foi um erro de digitação na função register_taxonomy. Eu sou uma pessoa horrível. Obrigado a todos pela ajuda. Eu ainda aprendi algumas coisas!


mesmo com 'show_ui' => false?
JMau

1
Ainda quero a interface do usuário no menu, mas não ao editar uma postagem.
mrwweb

Respostas:


35

Se você estiver registrando manualmente sua taxonomia customizada via register_taxonomy , poderá passar argumentos para controlar onde a metabox aparece.

No exemplo abaixo, show_uia configuração para falseremoveria completamente o metabox da tela de edição, da tela de edição rápida e do menu do administrador. Mas se você definir show_uipara trueque você pode conseguir o controle mais matizada pelo então usando o show_in_quick_edite meta_box_cbargumentos (definindo o mais tarde para false oculta a METABOX na tela do CPT edição como desejado).

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

Funciona. mantenha o menu admin e remova a taxonomia personalizada no formulário e adicione novo tipo de postagem personalizada. Obrigado.
IT Vlogs

Obrigado! Eu estava procurando por 'meta_box_cb' => false para ocultá-lo em um novo post, onde defini-lo como nulo apenas exibe a versão padrão do wordpress.
Ryan H

Suave e simples.
Travis van der Font

6

Você diz que deseja remover as caixas da posttela de edição, não da tela Tipo de postagem, portanto, supondo que você possa registrar sua taxonomia apenas para os tipos de postagem aos quais deseja aplicar, e evite isso completamente. O exemplo no Codex registra a taxonomia de amostra apenas para o booktipo de postagem como:

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

Acho que é isso que você precisa fazer, mas você não publicou nenhum código de registro para os tipos de postagem ou as taxonomias.

Se você mesmo criou as meta boxes - ou seja, essas caixas não são as padrão -, a maneira de evitar esse problema é registrar as meta boxes nos ganchos específicos pós-tipo :

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

Ou, para seguir o exemplo acima:

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

Uma dessas abordagens deve resolver isso para você. Eu não acho que você deveria ter que usar remove_meta_box.

Se você estiver tentando remover as meta boxes do tipo de postagem em que estão registradas, isso funcionará (novamente seguindo o exemplo no Codex):

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

Tenho certeza de que admin_menué muito cedo, mas não verifiquei isso. add_metaboxestambém funciona para mim. Não sei por que isso não funciona para você.


Desculpe por não estar claro. Eu quis dizer a tela Tipo de postagem . Cada taxonomia é registrada apenas em um tipo de postagem personalizado. Tentei usar esse gancho add_meta_boxes_ * brevemente, mas vou tentar algumas variações sobre isso (embora esteja usando os metaboxes gerados automaticamente).
mrwweb

Então a última opção na resposta deve fazê-lo. Eu testei. A caixa vai embora. Não posso dizer que compreendo a lógica de ter as taxonomias sem as caixas.
s_ha_dum

(Veja a edição acima. Foi um erro de digitação. Isso é por minha conta ... Obrigado pela ajuda). Para responder sua pergunta, estou exibindo as taxonomias com um campo personalizado avançado (é uma interface melhor para os usuários do site).
mrwweb

Seu último exemplo me colocou na direção certa, mas foi isso que funcionou para mim: add_action ('admin_menu', 'remove_taxonomies_metaboxes');
Marcos Buarque

Achei que essa sintaxe não funciona com a versão atual do WordPress, verifique esta resposta para uma solução funcional.
Davey

3

Usando o ACF para o gerenciamento de taxonomias personalizadas, os metaboxes padrão são desnecessários. Eu tentei, com sucesso, este código:

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

A prioridade mais baixa (100) permite que esse código funcione também se as taxonomias forem criadas por um plug-in como o CPT-UI.


tagsdiv deve ter à direita -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Greg Haygood
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.