0

我运行一个包含数千个帖子的多作者 Wordpress 网站。为了突出好帖子,我按只有管理员可以设置的特定标签过滤它们。例如featuredfront page等等。

为了避免作者自己选择这些标签,我使用以下脚本。如果用户选择了一个禁止标签,一旦他们点击发布按钮,它就会被删除。评论是为了方便:

add_action('save_post', 'remove_tags_function', 10, 1); //whenever a post is saved, run the below function

function remove_tags_function( $post_id ){
    if(!current_user_can('manage_options')){ // if the logged in user cannot manage options (only admin can)
        $post_tags = wp_get_post_terms( $post_id, 'post_tag', array( 'fields'=>'names' ) ); //grab all assigned post tags
        $pos = array_search( 'tag-to-be-deleted', $post_tags ); //check for the prohibited tag
        if( false !== $pos ) { //if found
            unset( $post_tags[$pos] ); //unset the tag
            wp_set_post_terms ($post_id, $post_tags, 'post_tag'); //override the posts tags with all prior tags, excluding the tag we just unset
        }
    }//end if. If the current user CAN manage options, the above lines will be skipped, and the tag will remain
}

此解决方案存在一个主要问题。帖子发布后,管理员会给它一个featured标签 - 但是,如果原作者对他们的帖子进行任何更新,该标签就会消失。你明白这个问题吗?

很多作者喜欢修改自己的帖子,尤其是在评论中收到反馈的时候,还有就是新闻相关的帖子,需要经常更新。

您能提出什么解决方案来解决这种情况?管理员需要能够提供特色标签,如果作者更新他们的帖子,标签应该保留。什么谜...

4

2 回答 2

0

您必须区分用户添加的标签和管理员添加的标签并分别处理它们。将标志列添加到标签或将用户和管理员的标签保存在单独的表格中。

于 2012-09-17T15:53:47.530 回答
0

我建议您根本不为您的管理属性使用标签。本质上,您要做的就是用某些属性标记某些帖子。

为此,我可能会建议使用自定义分类法。

See the linked article, especially the "Using Labels For Taxonomies" section to give you some ideas on how to add custom handling for your attributes, that could be kept separate from the tag system altogether.

The Link

于 2012-09-17T16:02:34.607 回答