情報を追記している場合はありますが、古い情報を訂正はしていませんので、公開年月日を参照してください。プラグイン・タグ、いずれもワードプレス・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 } } } });
その他のユーザー関連記事一覧
- カスタムフィールドの値で閲覧制限(2011.01.07作成)
- 会員制サイトの条件分岐(2011.05.01作成)
- Advanced Custom Fields でプロフィールを拡張(2013.02.06作成)
- ユーザー間でメディアを共有しない(2013.02.15作成)
- ユーザー一覧をカスタムフィールド値でソート(2013.04.26作成)
- author archive のパーマリンクを変更(2013.05.03作成)
- プロフィール項目の非表示(2013.05.25作成)
- ユーザーにタクソノミーを設定(2013.08.10作成)
- 閲覧制限の付け方(2013.09.11作成)
- 会員制コミュニティでユーザー名を見せない設定(2013.11.20作成)
- ログインエラー時にlogin.php にリダイレクトしない(2014.04.29作成)
- 会員登録関連メモ(2015.04.08作成)
- 手軽な閲覧制限(2015.12.08作成)
- 特定のユーザー権限と特定のカスタム投稿(2016.08.12作成)
- ユーザー情報アップデート時の通知(2019.06.25作成)
- Theme My Login の変わったところ(2020.05.18作成)
- 無理やりパスワードを付ける(2021.03.17作成)
- WP Members ちょっと謎めく(2021.03.22作成)
- 権限周り復習(2021.08.03作成)
- ユーザーとタームの紐付け(2021.08.04作成)
- ユーザーとタームの紐付け2(2021.08.05作成)