Функция unregister_taxonomy() позволяет отменить регистрацию таксономии в WordPress. Это может быть полезно, если вам нужно удалить пользовательскую таксономию, которая была зарегистрирована ранее.
unregister_taxonomy( string $taxonomy ): true|WP_Error
Параметры
- $taxonomy (строка, обязательный): Название таксономии, которую вы хотите удалить.
Возвращаемое значение
- true: Возвращает trueпри успешном удалении.
- WP_Error: Возвращает объект WP_Errorв случае ошибки или если указанная таксономия не существует.
Как работает функция
Функция unregister_taxonomy() удаляет указанную таксономию из WordPress. При этом будут удалены правила перезаписи ЧПУ, параметры запроса и связанные с таксономией фильтры. Однако следует учитывать, что эта функция не работает со встроенными таксономиями, такими как post_tag и category, так как они имеют свойство _builtin = true.
Хуки
- unregistered_taxonomy: Хук, вызываемый после удаления таксономии.
Пример 1: Удаление пользовательской таксономии
В этом примере мы удаляем таксономию product_category:
add_action( 'init', 'wpname_unregister_taxonomy' );
function wpname_unregister_taxonomy() {
    unregister_taxonomy( 'product_category' );
}
Пример 2: Удаление таксономии «тип проекта»
В следующем примере мы сначала регистрируем таксономию project-type, а затем отменяем её регистрацию:
if( !function_exists( 'plugin_prefix_unregister_taxonomy' ) ) {
    function plugin_prefix_unregister_taxonomy(){
        unregister_taxonomy( 'project-type' );
    }
}
add_action('init','plugin_prefix_unregister_taxonomy');
Пример 3: Удаление таксономии только на определённых страницах
В этом примере мы сначала регистрируем таксономию genre, а затем удаляем её только на отдельных страницах:
// Регистрация таксономии
add_action( 'init', 'create_genre_taxonomy' );
function create_genre_taxonomy(){
    register_taxonomy('genre', array('book'), array(
        'hierarchical' => true,
        'labels' => array(
            'name' => 'Genres',
            'singular_name' => 'Genre',
        ),
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'genre' ),
    ));
}
// Удаление таксономии
add_action( 'wp', 'unregister_genre_taxonomy' );
function unregister_genre_taxonomy(){
    // Отменяем таксономию только на отдельных страницах
    if( ! is_singular() ) return;
    unregister_taxonomy('genre');
}
Заключение
Функция unregister_taxonomy() является полезным инструментом для удаления пользовательских таксономий в WordPress. Она позволяет гибко управлять таксономиями вашего проекта, но помните, что не все таксономии могут быть удалены с её помощью. Используйте её с осторожностью, чтобы избежать путаницы в вашей системе.
