如何从WordPress中删除分类法?

27

我正在创建不同的自定义文章类型和分类法,并希望从默认的“文章”文章类型中删除“文章标签”分类法。我该如何操作?

谢谢。

7个回答

45

我建议不要直接更改实际的全局变量。更安全的方法是从文章类型中注销分类法:register_taxonomy 既用于创建也用于修改。

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

要移除侧边栏菜单条目:

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

add_action( 'admin_menu', 'remove_menus' );

对我来说起作用了!看起来影响最本地化。 - Samuel Hulick
这个可以运行,但是侧边栏中的链接仍然存在! - Lars Ebert
以下是如何删除侧边栏菜单项的代码:function remove_menus(){ remove_menu_page('edit-tags.php?taxonomy=post_tag'); // 文章标签 } add_action( 'admin_menu', 'remove_menus' ); - pixeline
2
这是最简单的解决方案,而且没有第二个脚本,菜单项也被删除了。 - Ken Prince
1
我在这里发现了一个小错误:当您编辑菜单时,分类法仍将包含在显示选项页面中。要解决此问题,只需传入一个额外的args数组:register_taxonomy('post_tag',array(),array('show_in_nav_menus'=> false)); - Will Haynes
显示剩余2条评论

21

也许更加技术上正确的方法是使用 unregister_taxonomy_for_object_type

add_action( 'init', 'unregister_tags' );

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

1
在删除之前,您可以检查分类法是否已与对象类型相关联,以确保不必要的操作。代码示例:if ( is_object_in_taxonomy( 'post', 'post_tag' ) ) { ... } - martisj

5

完全注销并删除(最低 PHP 版本 5.4!)

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

4

在“taxonomy_to_remove”处输入您想要移除的分类法。例如,您可以将其替换为现有的post_tagcategory

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

不要解释它。 - Jeremy

2

1
这不能用于内置分类法,所以推测这不能用于“标签”? - Rick Curran
我们可以使用下面的函数来移除内置分类法,例如标签:function mh_unregister_tags_for_posts() { unregister_taxonomy_for_object_type( 'post_tag', 'post' ); } add_action( 'init', 'mh_unregister_tags_for_posts' ); - Mahfuzul Hasan

1

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

在管理员菜单中添加操作,删除菜单项的功能。定义一个函数用于删除菜单项,并移除“文章标签”的子菜单页面。


1
请在 'admin_init' 钩子中使用它,而不是 'init'。保留html,不进行解释。
function unregister_taxonomy(){
    register_taxonomy('post_tag', array());
}
add_action('admin_init', 'unregister_taxonomy');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接