私は、何千もの投稿がある複数の著者の 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
タグを付けますが、元の作成者が投稿を更新すると、タグは消えます。問題を理解していますか?
多くの著者は、特にコメントでフィードバックを受け取ったときに、自分の投稿を修正することを好みます。また、頻繁に更新する必要があるニュース関連の投稿もあります。
このシナリオを解決するために、どのようなソリューションを提案できますか? 管理者は注目のタグを付けることができる必要があり、作成者が投稿を更新した場合、タグはそのままにしておく必要があります。なんというパズル…