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

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

タクソノミー名はblog_cat。

ACF タクソノミーフィールドにadd_filter

タクソノミーフィールドはタームを保存・ロードする設定でadd_filter で表示するタームを制限。https://www.advancedcustomfields.com/resources/acf-fields-taxonomy-wp_list_categories/

ユーザー権限によって制限する例

function blog_cat_query($args, $field) {
	$current_user = wp_get_current_user();
 	if ( user_can( $current_user, 'administrator' ) ) { 
$args['include'] = array(8,9); }
 	if ( user_can( $current_user, 'editor' ) ) { 
$args['include'] = array(8,10); }
		return $args;
}
add_filter('acf/fields/taxonomy/wp_list_categories/name=term', 'blog_cat_query', 10, 3);

設定ページを作成する場合、ユーザーを選択するフィールドしかないので、ユーザーごとに設定する例。ユーザーとタームはIDで保存。
ユーザー権限で設定したい場合は、サブフィールドをテキストでデフォルト値を設定するとか。

function blog_cat_query($args, $field) {
	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) { $args['include'] = $term; }
			} }
		return $args;
}
add_filter('acf/fields/taxonomy/wp_list_categories/name=term', 'blog_cat_query', 10, 3);

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