Отмена таксономии в WordPress: unregister_taxonomy() │ WP 4.5.0

UNREGISTER_TAXONOMY() │ WP 4.5.0

Функция unregister_taxonomy() отменяет регистрацию таксономии. Однако ее нельзя использовать для отмены встроенных таксономий (таких как категории и метки).

Производительность функции

  • 1 раз — 0.000039 сек (очень быстро)
  • 50000 раз — 0.89 сек (очень быстро)

Возвращаемые значения

  • Возвращает true при успешном выполнении.
  • Возвращает WP_Error в случае ошибки или если таксономия не существует.

Использование

unregister_taxonomy( $taxonomy );
  • $taxonomy (строка, обязательный параметр) — название таксономии, которую вы хотите отменить.

Примеры использования

Пример 1: Удаление таксономии

Предположим, что во время инициализации мы зарегистрировали таксономию "жанр". Затем нам нужно ее отменить.

// Регистрация таксономии
add_action( 'init', 'create_genre_taxonomy' );

function create_genre_taxonomy() {
    // Добавляем дерево таксономии 'жанр' (как категории)
    register_taxonomy( 'genre', array('book'), array(
        'hierarchical' => true,
        'labels' => $labels,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'genre' ),
    ) );
}

// Удаление таксономии
add_action( 'init', 'unregister_genre_taxonomy', 99 );

function unregister_genre_taxonomy() {
    // Отменяем таксономию только на отдельных страницах
    if ( ! is_singular() ) {
        return;
    }

    unregister_taxonomy( 'genre' );
}

Примечания

  • Глобальная переменная: $wp_taxonomies — список всех таксономий.

Изменения

Функция была введена в версии 4.5.0.

Код функции UNREGISTER_TAXONOMY()

function unregister_taxonomy( $taxonomy ) {
    global $wp_taxonomies;

    if ( ! taxonomy_exists( $taxonomy ) ) {
        return new WP_Error( 'invalid_taxonomy', __( 'Некорректная таксономия.' ) );
    }

    $taxonomy_object = get_taxonomy( $taxonomy );

    // Запрещаем отмену встроенных так��ономий.
    if ( $taxonomy_object->_builtin ) {
        return new WP_Error( 'invalid_taxonomy', __( 'Отмена встроенной таксономии запрещена.' ) );
    }

    $taxonomy_object->remove_rewrite_rules();
    $taxonomy_object->remove_hooks();

    // Удаляем таксономию.
    unset( $wp_taxonomies[ $taxonomy ] );

    /**
     * Срабатывает после отмены таксономии.
     *
     * @since 4.5.0
     *
     * @param string $taxonomy Название таксономии.
     */
    do_action( 'unregistered_taxonomy', $taxonomy );

    return true;
}

Связанные функции

  • edit_term_link()
  • get_edit_term_link()
  • get_taxonomies()
  • get_taxonomy()
  • get_term()
  • get_term_by()
  • get_term_children()
  • get_term_field()
  • get_term_link()
  • get_terms()
  • is_taxonomy_hierarchical()
  • register_taxonomy()
  • register_taxonomy_for_object_type()
  • sanitize_term()
  • sanitize_term_field()
  • single_term_title()
  • taxonomy_exists()
  • term_description()
  • term_exists()
  • term_is_ancestor_of()
  • the_terms()
  • unregister_taxonomy_for_object_type()
  • wp_count_terms()
  • wp_delete_term()
  • wp_get_term_taxonomy_parent_id()
  • wp_insert_term()
  • wp_update_term()
  • wp_update_term_count()

Эта информация поможет вам лучше понять, как отменять таксономии в WordPress и использовать их в вашем проекте.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *