仅允许用户创建特定标记

时间:2020-03-25 作者:Honoluluman

我正在使用一个编辑wordpress主题,它有一个前端帖子编辑器,供用户(贡献者)创建帖子。编辑器授予用户为文章选择类别和添加标记的权限。

我已经设置了可以随帖子分配的特定自定义标记。

我如何允许用户只能添加这些标记,而不能添加他想要的任何标记。例如,只有“出埃及记”“节假日”。不需要为用户创建任何消息。只允许在数据库中只注册那些特定的标记。我可以使用我以某种方式创建的自定义标记的ID吗?

我发现了一些非常相似的东西this post 它在后端的帖子编辑器中运行良好,但在前端则不行。

function disallow_insert_term($term, $taxonomy) {

$user = wp_get_current_user();

if ( $taxonomy === \'post_tag\' && in_array(\'contributor\', $user->roles) ) {

    return new WP_Error(
        \'disallow_insert_term\', 
        __(\'Your role does not have permission to add terms to this taxonomy\')
    );

}

return $term;
}
add_filter(\'pre_insert_term\', \'disallow_insert_term\', 10, 2);
*(注意,投稿人不能发布,只能发送一篇文章供审批。但当我发布文章时,我没有得到任何标签。)

或者类似的this 但是,不要删除特定的标记,而是删除除自定义标记以外的所有标记。

function remove_tags_function( $post_id ){
    $post_tags = wp_get_post_terms( $post_id, \'post_tag\', array( \'fields\'=>\'names\' ) ); //grab all assigned post tags
    $pos = array_intersect( array(\'TAG1\', \'TAG2\', \'TAG3\', \'ETC...\'), $post_tags ); //check for the prohibited tag
    if( !empty($pos) ) { //if found
        $post_tags = array_diff($post_tags, $pos);
        wp_set_post_terms ($post_id, $post_tags, \'post_tag\'); //override the posts tags with all prior tags, excluding the tag we just unset
    }

 }
add_action(\'save_post\', \'remove_tags_function\', 10, 1); //whenever a post is saved, run the below function
上述代码也可以通过删除“TAG1”、“TAG2”、“TAG3”等来正常工作标记,但仍在post\\u tag taxonomy中创建标记

因此,基本上我正在搜索一个过滤器,当用户开始键入标记时,它只允许将特定的标记添加到数据库中。

任何帮助都将不胜感激

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

我找到了这个问题的解决办法here.此代码不允许用户从后端或前端创建新标记,而只使用admin在post\\u标记分类中设置的现有自定义标记。

相关推荐

为什么GET_USERS()不在管理后端工作?

我不明白为什么get_users() 可在前端工作,但不能在管理后端工作。我相信这在某种程度上是可行的。我的代码:function add_new_user_menu_item() { remove_submenu_page(\'users.php\', \'user-new.php\'); $submenu_title = __( \'Add new\', \'myplugin\' ); add_submenu_page(