ユーザーとタームの紐付け

情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・PHPのバージョン等によって動作しない場合もあります。

タクソノミー名はblog_cat。閲覧制限もかける場合、ユーザーグループでアクセス権を設定する場合はUser Access Manager が効率的かと思うが、1ユーザーずつ設定する場合は関数のほうが早いと思う。

1ユーザーに1タームを紐付ける

通常のタームの選択欄はAdmin CSS などで非表示に。

function blog_cat_check($post_ID) {
	$current_user = wp_get_current_user();
if ($current_user->display_name === 'aaaa') { $defaultcat= array('cat2'); }
if ($current_user->display_name === 'bbbb') { $defaultcat= array('cat1'); }
	wp_set_object_terms($post_ID, $defaultcat, 'blog_cat');
	}
add_action('publish_blog', 'blog_cat_check');

設定ページconfig でACFリピーターで設定。ユーザーとターム(選択は1つ)はそれぞれIDで保存。

function blog_cat_check($post_ID) {
	global $wpdb;
	$cid = get_current_user_id();
	$pid = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = 'config'");
 	if (have_rows('config',$pid)) { while (have_rows('config',$pid)) { 
		the_row(); $user_id = get_sub_field('user'); $term = get_sub_field('term');
if ($cid == $user_id) {
	$defaultcat= array($term);
	wp_set_object_terms($post_ID, $defaultcat, 'blog_cat');
	}
		}
								   }
}
add_action('publish_blog', 'blog_cat_check');

1ユーザーに複数の選択肢

Admin CSS でクラスunauth を設定(クリック不可・色を薄く)して、タームの選択欄#blog_catchecklist li に付け、ユーザーに対してそのクラスを取るIDを設定。

add_action('admin_footer', function() {
?>
	<script>jQuery(document).ready(function() {
    jQuery("#blog_catchecklist li").addClass("unauth");
});</script>
<?php $current_user = wp_get_current_user();
if ($current_user->display_name === 'aaaa') { ?>
	<script>jQuery(document).ready(function() {
    jQuery("#blog_catchecklist li#blog_cat-9, #blog_catchecklist li#blog_cat-8").removeClass("unauth");
});</script>
<?php }
if ($current_user->display_name === 'bbbb') { ?>
	<script>jQuery(document).ready(function() {
    jQuery("#blog_catchecklist li#blog_cat-10, #blog_catchecklist li#blog_cat-8").removeClass("unauth");
});</script>
<?php }
});

設定ページconfig でACFリピーターで設定。ユーザーとターム(複数選択)はそれぞれIDで保存。

add_action('admin_footer', function() {
?>
	<script>jQuery(document).ready(function() {
    jQuery("#blog_catchecklist li").addClass("unauth");
});</script>
<?php global $wpdb;
	$cid = get_current_user_id();
	$pid = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = 'config'");
 	if (have_rows('config',$pid)) { while (have_rows('config',$pid)) { 
		the_row();$user_id = get_sub_field('user'); $term = get_sub_field('term'); $term_data = '#blog_catchecklist li#blog_cat-'.implode(",#blog_catchecklist li#blog_cat-", $term).'';
if ($cid == $user_id) { ?>
	<script>jQuery(document).ready(function() {
    jQuery("<?php echo $term_data; ?>").removeClass("unauth");
});</script>
<?php } } }
});

その他のユーザー関連記事一覧