web-dev-qa-db-fra.com

Comment empêcher l'ajout de nouveaux termes à une taxonomie personnalisée?

J'ai créé des taxonomies personnalisées à l'aide de register_taxonomy , mais je souhaite empêcher l'ajout de nouveaux termes. J'ai remarqué qu'il y avait un argument de 'capacités' disponible dans register_taxonomy, est-ce ce que je devrais utiliser et si oui, comment l'utiliser?

Voici un extrait de mon code. J'utilise un plugin que j'ai créé pour ajouter les taxonomies (d'où la partie fonction statique publique). Existe-t-il un moyen simple d’empêcher la création de nouveaux termes pour ma taxonomie?

Merci

Osu

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 );
    }
6
Osu

Vous pouvez bloquer l'ajout de nouveaux termes avec un filtre sur pre_insert_term. La source est utile pour déterminer ce que vous pouvez faire.

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 );
17
s_ha_dum