Как удалить таксономию из Wordpress?

Я создаю различные настраиваемые типы сообщений и таксономии, и я хочу удалить таксономию «Теги сообщений» из типа сообщений «Сообщения» по умолчанию. Как мне это сделать?

Спасибо.


person Evan    schedule 22.11.2010    source источник


Ответы (6)


Я предлагаю вам не связываться с фактическим глобальным. Безопаснее просто отменить регистрацию таксономии из типа записи: 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' );
person Evan    schedule 02.12.2011
comment
Работал на меня! Также похоже на наиболее локализованное воздействие. - person Samuel Hulick; 12.02.2012
comment
Это работает, но ссылка на боковой панели все еще там! - person Lars Ebert; 27.03.2014
comment
Вот как удалить пункт меню боковой панели: function remove_menus(){ remove_menu_page('edit-tags.php?taxonomy=post_tag'); // Post tags } add_action( 'admin_menu', 'remove_menus' ); - person pixeline; 23.11.2014
comment
Это было самое простое решение, к тому же пункт меню у меня убрали без второго скрипта. - person Ken Prince; 22.12.2014
comment
Здесь я обнаружил одну небольшую ошибку: таксономия по-прежнему будет включена на страницу параметров отображения при редактировании меню. Чтобы это исправить, просто передайте дополнительный массив аргументов: register_taxonomy( 'post_tag', array(), array('show_in_nav_menus' => false) ); - person Will Haynes; 04.04.2015
comment
Это помогло мне! Я использовал unregister_taxonomy('product_tag') (для woocommerce) и получал странные ошибки в журнале. Повторная регистрация его как пустого массива в основном имела тот же эффект, и я не получил никаких ошибок ???? - person Brad Adams; 30.03.2017
comment
Комментарий @WillHaynes полностью обязывает действие «Удалить меню». Сейчас его нет везде. - person Thomas Fellinger; 19.10.2020

Возможно, более технически правильным методом было бы использование unregister_taxonomy_for_object_type.

add_action( 'init', 'unregister_tags' );

function unregister_tags() {
    unregister_taxonomy_for_object_type( 'post_tag', 'post' );
}
person cameronjonesweb    schedule 14.06.2016
comment
Возможно, это не обязательно, но вы можете проверить, связана ли таксономия с типом объекта, прежде чем удалять ее с помощью if ( is_object_in_taxonomy( 'post', 'post_tag' ) ) { ... } - person martisj; 02.01.2017

Там, где написано «taxonomy_to_remove», вы введете таксономию, которую хотите удалить. Например, вы можете заменить его существующим, post_tag или category.

add_action( 'init', 'unregister_taxonomy');
function unregister_taxonomy(){
    global $wp_taxonomies;
    $taxonomy = 'taxonomy_to_remove';
    if ( taxonomy_exists( $taxonomy))
        unset( $wp_taxonomies[$taxonomy]);
}
person cnotethegr8    schedule 10.07.2011
comment
не отвечает на вопрос. Это просто скрывает это - person Jeremy; 15.02.2016

Полная отмена регистрации и удаление (минимальная версия 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');
    });
person Den Media    schedule 21.04.2017

Появилась новая функция для удаления таксономии из WordPress.

Use unregister_taxonomy( string $taxonomy ) function

См. подробности: https://developer.wordpress.org/reference/functions/unregister_taxonomy/

person Mahfuzul Hasan    schedule 08.09.2016
comment
Это нельзя использовать для встроенных таксономий, поэтому, по-видимому, это нельзя использовать для «тегов»? - person Rick Curran; 03.10.2016
comment
Для удаления встроенной таксономии, такой как тег, мы можем использовать следующую функцию: function mh_unregister_tags_for_posts() { unregister_taxonomy_for_object_type('post_tag', 'post'); } add_action('init', 'mh_unregister_tags_for_posts'); - person Mahfuzul Hasan; 28.09.2017

Используйте его в хуке 'admin_init' insetead, а не 'init'

function unregister_taxonomy(){
    register_taxonomy('post_tag', array());
}
add_action('admin_init', 'unregister_taxonomy');
person user2957058    schedule 18.12.2014