2010-11-22 22 views
23

Estoy creando diferentes tipos de publicaciones y taxonomías personalizadas y quiero eliminar la taxonomía 'Publicar etiquetas' del tipo de publicación 'Publicaciones' predeterminado. ¿Cómo voy a hacer esto?¿Cómo elimino una taxonomía de Wordpress?

Gracias.

Respuesta

5

Donde dice 'taxonomy_to_remove' es donde ingresará la taxonomía que desea eliminar. Por ejemplo, puede reemplazarlo por el existente, post_tag o category.

add_action('init', 'unregister_taxonomy'); 
function unregister_taxonomy(){ 
    global $wp_taxonomies; 
    $taxonomy = 'taxonomy_to_remove'; 
    if (taxonomy_exists($taxonomy)) 
     unset($wp_taxonomies[$taxonomy]); 
} 
+0

no responde a la pregunta (un mínimo de PHP versión 5.4!). Esto solo lo oculta – Jeremy

41

Le sugiero que no se meta con el mundo real. Es más seguro simplemente cancelar el registro de la taxonomía del tipo de publicación: register_taxonomy se usa tanto para la creación como para la modificación.

function ev_unregister_taxonomy(){ 
    register_taxonomy('post_tag', array()); 
} 
add_action('init', 'ev_unregister_taxonomy'); 

Para eliminar la entrada del menú de la barra lateral:

// Remove menu 
function remove_menus(){ 
    remove_menu_page('edit-tags.php?taxonomy=post_tag'); // Post tags 
} 

add_action('admin_menu', 'remove_menus'); 
+0

¡Funcionó para mí! Parece ser el impacto más localizado, también. –

+0

Esto funciona, pero el enlace en la barra lateral todavía está allí. –

+0

Aquí está cómo eliminar la entrada del menú de la barra lateral: 'function remove_menus() { remove_menu_page ('edit-tags.php? Taxonomy = post_tag'); // Publicar etiquetas } add_action ('admin_menu', 'remove_menus'); ' – pixeline

2

utilizarlo en 'admin_init' insetead gancho no 'init'

function unregister_taxonomy(){ 
    register_taxonomy('post_tag', array()); 
} 
add_action('admin_init', 'unregister_taxonomy'); 
7

Tal vez un método técnicamente más correcta sería utilizar unregister_taxonomy_for_object_type

add_action('init', 'unregister_tags'); 

function unregister_tags() { 
    unregister_taxonomy_for_object_type('post_tag', 'post'); 
} 
+1

Puede que no sea necesario, pero podría verificar si la taxonomía ya está asociada con el tipo de objeto antes de eliminarla con 'if (is_object_in_taxonomy (' post ',' post_tag ')) {...} ' – martisj

2

Hay una nueva función para eliminar la taxonomía de WordPress.

Use unregister_taxonomy(string $taxonomy) function

Ver detalles: https://developer.wordpress.org/reference/functions/unregister_taxonomy/

+1

¿Esto no se puede usar para taxonomías integradas, así que presumiblemente no se puede usar para' etiquetas '? –

+0

para eliminar incorporado en la taxonomía como etiqueta podemos utilizar esta función a continuación: mh_unregister_tags_for_posts function() { unregister_taxonomy_for_object_type ('post_tag', 'post'); } add_action ('init', 'mh_unregister_tags_for_posts'); –

0

add_action('admin_menu', 'remove_menu_items'); function remove_menu_items() { remove_submenu_page('edit.php','edit-tags.php?taxonomy=post_tag'); }

1

anular el registro total y retire

add_action('init', function(){ 
     global $wp_taxonomies; 
     unregister_taxonomy_for_object_type('category', 'post'); 
     unregister_taxonomy_for_object_type('post_tag', 'post'); 
     if (taxonomy_exists('category')) 
      unset($wp_taxonomies['category']); 
     if (taxonomy_exists('post_tag')) 
      unset($wp_taxonomies['post_tag']); 
     unregister_taxonomy('category'); 
     unregister_taxonomy('post_tag'); 
    }); 
Cuestiones relacionadas