Как предотвратить добавление новых терминов в пользовательскую таксономию?


Я создал несколько пользовательских таксономий, используя register_taxonomy, но я хочу предотвратить добавление новых терминов. Я заметил, что в register_taxonomy есть аргумент "возможности", который я должен использовать, и если да, то как бы я его использовал?

Вот часть моего кода, я использую плагин, который я создал, чтобы добавить таксономии (следовательно, часть общедоступной статической функции). Есть ли простой способ предотвратить создание новых терминов для моего таксономия?

Спасибо

Осу

public static function register_directory_styles_taxonomy()
    {
        $labels = array(
            'name'                      => 'Music styles',
            'singular_name'             => 'Music style',
            'search_items'              => 'Search music styles',
            'all_items'                 => 'All music styles',
            'parent_item'               => 'Parent music style',
            'edit_item'                 => 'Edit music style',
            'update_item'               => 'Update music style',
            'add_new_item'              => 'Add new music style',
            'new_item_name'             => 'New music style',
            'choose_from_most_used'     => 'Choose from most used music styles'
        );

        $args = array(
            'hierarchical'  => true,
            'labels'        => $labels,
            'rewrite'       => false
            // 'show_ui'        => false
        );

        register_taxonomy( 'ibmstyles', 'ibmdirectory', $args );
    }
Author: Osu, 2013-09-03

1 answers

Вы можете заблокировать добавление новых терминов с помощью фильтра на pre_insert_term. Источник полезен при разработке того, что вы можете сделать.

add_action( 'pre_insert_term', function ( $term, $taxonomy )
{
    return ( 'yourtax' === $taxonomy )
        ? new WP_Error( 'term_addition_blocked', __( 'You cannot add terms to this taxonomy' ) )
        : $term;
}, 0, 2 );
 23
Author: s_ha_dum, 2014-11-25 17:31:58