我正在使用一个编辑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中创建标记
因此,基本上我正在搜索一个过滤器,当用户开始键入标记时,它只允许将特定的标记添加到数据库中。
任何帮助都将不胜感激