如何防止将新术语添加到自定义分类中?

时间:2013-09-03 作者:Osu

我使用创建了一些自定义分类法register_taxonomy, 但我想阻止添加新的术语。我注意到register\\u分类法中有一个“capabilities”参数,这是我应该使用的吗?如果是,我将如何使用它?

这是我的一些代码,我使用我创建的插件来添加分类法(因此是公共静态函数部分)。有没有一种简单的方法可以防止为我的分类法创建新的术语?

谢谢

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

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您可以使用打开的筛选器阻止添加新术语pre_insert_term. 这个source is helpful 在制定你能做什么的过程中。

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

SO网友:Carl Brubaker

这似乎是最简单的解决方法here.

解决方案是修改分类法的capabilities 阵列:

\'capabilities\' => array(
    \'manage_terms\' => \'\',
    \'edit_terms\' => \'\',
    \'delete_terms\' => \'\',
    \'assign_terms\' => \'edit_posts\'
),

结束

相关推荐

GET_TERMS不返回任何自定义分类

我有一个自定义的帖子类型,叫做project 调用自定义分类法tagportfolio我使用此代码生成以下两个: add_action(\'init\', \'project_custom_init\'); /*-- Custom Post Init Begin --*/ function project_custom_init() { $labels = array( \'name\' => _x(\'Project