Eliminar Metabox de Taxonomía Personalizada de la Pantalla de Tipo de Entrada Personalizada
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!
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,
);

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.

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

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.

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

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.

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

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

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

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.

tagsdiv debe tener un guión al final:
remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );

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

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

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
