自定义分类功能

时间:2014-07-24 作者:vguerrero

我已经为自定义帖子类型注册了几个自定义分类法。其中一个的代码如下:

$labels = array(
    \'name\'              => __( \'Genre\', \'textdomain\' ),
    \'singular_name\'     => __( \'Genre\', \'textdomain\' ),
    \'search_items\'      => __( \'Search Genres\', \'textdomain\' ),
    \'all_items\'         => __( \'All Genres\', \'textdomain\' ),
    \'parent_item\'       => __( \'Parent Genre\', \'textdomain\' ),
    \'parent_item_colon\' => __( \'Perent Genre:\', \'textdomain\' ),
    \'edit_item\'         => __( \'Edit Genre\', \'textdomain\' ), 
    \'update_item\'       => __( \'Update Genre\', \'textdomain\' ),
    \'add_new_item\'      => __( \'Add New Genre\', \'textdomain\' ),
    \'new_item_name\'     => __( \'New Genre\', \'textdomain\' ),
    \'menu_name\'         => __( \'Genres\', \'textdomain\' ),
);
$args = array(
    \'labels\'            => $labels,
    \'public\'            => true,
    \'show_admin_column\' => true,
    \'show_ui\'           => true,
    \'hierarchical\'      => true,
    \'capabilities\'      => array(
        \'manage_terms\'  => \'edit_posts\',
        \'edit_terms\'    => \'edit_posts\',
        \'delete_terms\'  => \'edit_posts\',
        \'assign_terms\'  => \'edit_posts\'
    )
);
register_taxonomy( \'genres\', \'book\', $args );
我对功能有问题,因为我希望其中一个自定义税可以由作者管理。

如果我将功能定义为上面的代码\'manage_terms\' => \'edit_posts\', 即使作者具有edit\\u posts功能,也不允许作者向自定义分类法添加新术语。

我还尝试向作者角色添加自定义功能,并在注册自定义分类法时分配此功能,但没有成功。

这样做的目的是将“manage\\u categories”添加到authors角色中,但这种解决方案并不令人满意,因为所有分类法都可以由作者编辑。

提前谢谢。

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

就像CPT功能一样,分类法的功能也是可定制的,在register_taxonomy():

能力

由于您的作者只有edit_posts 正如您所观察到的,它可以分配现有术语,但不能创建它们。您可以自定义相关分类法的功能,并为作者提供相应的功能,以便他们可以在其中创建术语(但不能在其他分类法中创建术语)。

SO网友:Marc

当您在注册分类法的同时定义功能时,您定义的新功能等于的现有功能manage_terms edit_terms delete_termsassign_terms.

所以你应该这样做,因为你的分类是Genre:

\'capabilities\' => array(
    \'manage_terms\' => \'manage_genre\',
    \'edit_terms\' => \'edit_genre\',
    \'delete_terms\' => \'delete_genre\',
    \'assign_terms\' => \'assign_genre\',
)
完成后,您将能够将这些功能映射到用户角色。要做到这一点,我最喜欢的方法是使用插件,如Capability Manager Enhanced, 尽管有很多插件可以做到这一点。

结束

相关推荐

PHP致命错误:无法为wp-includes/capabilities.php中的非对象调用重载函数

我在apache日志中遇到了太多以下错误。PHP Fatal error: Cannot call overloaded function for non-object in wp-includes/capabilities.php on line 1187这是函数current\\u user\\u can($capability)的内部,第1187行如下所示:$current_user = wp_get_current_user(); 我不知道问题出在哪里?