我运行一个包含数千个帖子的多作者 Wordpress 网站。为了突出好帖子,我按只有管理员可以设置的特定标签过滤它们。例如featured
,front 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
标签 - 但是,如果原作者对他们的帖子进行任何更新,该标签就会消失。你明白这个问题吗?
很多作者喜欢修改自己的帖子,尤其是在评论中收到反馈的时候,还有就是新闻相关的帖子,需要经常更新。
您能提出什么解决方案来解决这种情况?管理员需要能够提供特色标签,如果作者更新他们的帖子,标签应该保留。什么谜...