Eliminar Metabox de Taxonomía Personalizada de la Pantalla de Tipo de Entrada Personalizada

11 jun 2013, 21:49:27
Vistas: 30K
Votos: 22

Tengo dos taxonomías personalizadas jerárquicas, cada una en un tipo de entrada personalizada correspondiente. Me gustaría eliminar el metabox de cada una en la pantalla de edición del tipo de entrada.

He leído eliminar metabox de taxonomía personalizada del tipo de entrada personalizada y ¿Cómo eliminar un metabox de taxonomía estilo Categoría (jerárquica)? pero aún sigo atascado.

La función que estoy usando es:

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

He quitado los prefijos de los post_types y custom_taxonomies, pero eso es todo. He intentado usar el gancho admin_menu y el gancho add_meta_boxes recomendado por el Codex. He probado tanto normal como side para el tercer parámetro.

La función anterior está ubicada en un archivo mu-plugins debajo de la función que registra los tipos de entrada y taxonomías.


EDICIÓN: Era un error tipográfico en la función register_taxonomy. Soy una persona horrible. Gracias a todos por la ayuda. ¡Aún así aprendí algunas cosas!

2
Comentarios

¿incluso con 'show_ui' => false?

JMau JMau
11 jun 2013 21:59:45

Quiero que la interfaz de usuario aparezca en el menú, pero no cuando se edita una entrada.

mrwweb mrwweb
12 jun 2013 00:23:23
Todas las respuestas a la pregunta 5
3
68

Si estás registrando manualmente tu taxonomía personalizada a través de register_taxonomy, puedes pasar argumentos para controlar dónde aparece el metabox.

En el ejemplo a continuación, establecer show_ui en false eliminaría por completo el metabox de la pantalla de edición, la edición rápida y el menú de administración. Pero si estableces show_ui en true, puedes lograr un control más detallado usando los argumentos show_in_quick_edit y meta_box_cb (establecer este último en false oculta el metabox en la pantalla de edición del CPT como se desea).

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 ene 2016 20:45:10
Comentarios

Funciona. Mantiene el menú de administración y elimina la taxonomía personalizada en el formulario de añadir nuevo tipo de contenido personalizado. Gracias.

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

¡Gracias! Estaba buscando 'meta_box_cb'=>false para ocultarlo en post-new, donde establecerlo como null solo muestra la versión por defecto de WordPress.

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

Suave y sencillo.

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

Dices que quieres eliminar las cajas de la pantalla de edición de post, no de la pantalla del tipo de entrada, así que asumo que deberías poder registrar tu taxonomía solo para los tipos de entrada a los que quieres que aplique, y evitar esto por completo. El ejemplo en el Codex registra la taxonomía de ejemplo solo para el tipo de entrada book así:

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

Creo que esto es lo que necesitas hacer, pero no has publicado ningún código de registro para los tipos de entrada o las taxonomías.

Si has creado las meta cajas tú mismo—es decir, estas cajas no son las predeterminadas—entonces la forma de evitar este problema es registrar las meta cajas en los hooks específicos del tipo de entrada:

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

O siguiendo el ejemplo anterior:

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

Uno de estos enfoques debería resolver esto para ti. No creo que necesites usar remove_meta_box en absoluto.

Si estás intentando eliminar las meta cajas del tipo de entrada al que están registradas, esto funciona (siguiendo nuevamente el ejemplo en el Codex):

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

Estoy bastante seguro de que admin_menu es demasiado temprano, pero no lo verifiqué. add_metaboxes también funciona para mí. No sé por qué no funciona para ti.

11 jun 2013 22:19:36
Comentarios

Disculpa por no ser claro. Me refería a la pantalla de Tipo de Entrada. Cada taxonomía está registrada solo para un tipo de entrada personalizado. Intenté usar brevemente ese hook add_meta_boxes_* pero probaré algunas variaciones (aunque estoy usando los metaboxes generados automáticamente).

mrwweb mrwweb
12 jun 2013 00:25:52

Entonces la última opción en la respuesta debería funcionar. Lo probé. El cuadro sí desaparece. No puedo decir que entienda la lógica de tener las taxonomías sin los cuadros.

s_ha_dum s_ha_dum
12 jun 2013 00:28:48

(Ver edición arriba. Fue un error tipográfico. Eso fue mi culpa... Gracias por la ayuda). Para responder tu pregunta, estoy mostrando las taxonomías con un Advanced Custom Field (es una mejor interfaz para los usuarios del sitio).

mrwweb mrwweb
12 jun 2013 00:34:00

Tu último ejemplo me puso en la dirección correcta, pero esto es lo que funcionó para mí: add_action( 'admin_menu', 'remove_taxonomies_metaboxes' );

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

Descubrí que esta sintaxis no funciona con la versión actual de WordPress, revisa esta respuesta para una solución que sí funciona.

Davey Davey
2 may 2018 12:06:36
3

Las taxonomías registran un meta_box por defecto usando un ID tagsdiv-xxx. Al utilizar ACF para la gestión de taxonomías personalizadas, los metaboxes predeterminados son innecesarios. He probado, con éxito, 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 );

La prioridad baja (100) permite que este código funcione incluso si las taxonomías son creadas por un plugin como CPT-UI.

12 mar 2018 12:07:37
Comentarios

tagsdiv debe tener un guión al final:

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

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

Esto ya no funciona en Gutenberg.

Sudar Sudar
19 nov 2020 10:13:30

A partir de WordPress 5.6, 'tagsdiv-' ya no es válido. Usa la siguiente combinación para crear el id correspondiente: remove_meta_box( $taxonomy . 'div', $post_type, 'side' );

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

Prueba esta opción o añade 'meta_box_cb' => false a tus $args en register_taxonomy

add_action('init', function () {
    register_taxonomy('your_taxonomy', 'your_post_type', [
        'labels' => [
            // opciones de etiquetas
        ],
        // otras opciones
        'show_ui' => true,
        'show_in_quick_edit' => false,
        'meta_box_cb' => false,        // solo añade esta línea
    ]);
});
8 feb 2024 14:52:26
1

Probé las soluciones anteriores para ocultar la taxonomía pero no funcionaron para mí. Finalmente, encontré una solución.

Añade este código en el archivo functions.php de tu tema.

function Cc_Gutenberg_Register_files() 
{
    //archivo de script personalizado
    wp_register_script(
        'cc-block-script',
        get_stylesheet_directory_uri() .'/js/block-script.js',
        array( 'wp-blocks', 'wp-edit-post' )
    );
    // registrar script del editor de bloques
    register_block_type( 'cc/ma-block-files', array(
        'editor_script' => 'cc-block-script'
    ) );     
}
add_action('init', 'Cc_Gutenberg_Register_files');

Para block-script.js, puedes usar este código.

wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'taxonomy-panel-category' ) ; // Ocultar Categoría por defecto
wp.data.dispatch( 'core/edit-post').removeEditorPanel( 'taxonomy-panel-TAXONOMY-NAME' ) ; //Ocultar Taxonomía Personalizada
9 nov 2021 07:26:04
Comentarios

remove_meta_box( $id, $screen, $context ) elimina las metaboxes de la pantalla del editor "clásico"; no funciona para el editor de bloques Gutenberg.

Tu solución es correcta para eliminar metaboxes de taxonomías del editor de bloques.

Esto se menciona aquí: https://developer.wordpress.org/reference/functions/remove_meta_box/#comment-5005

Pea Pea
5 sept 2023 07:10:29