Ограничить пользовательский контент для конкретного пользователя

Я создал пользовательский тип сообщения, называемый «Студенты» с настраиваемыми полями, такими как ID #, Name, year, age и т. Д. При этом я также создал одну «студенческую» должность для каждого учащегося в школе.

Что я хочу сделать, так это ограничить каждую запись одним учеником по ID #, при этом учащийся сможет войти и просмотреть свою страницу (они не могут редактировать, просто просматривать) на интерфейсе.

Я пробовал пользовательский контент, роль Scoper и другие плагины, но ни один из них, похоже, не работает в этом сценарии.

Pls предлагает все, что может, что может мне помочь.

Заранее спасибо.

Solutions Collecting From Web of "Ограничить пользовательский контент для конкретного пользователя"

Я не совсем уверен, правильно ли я получил вас.

Однако, если у вас есть отношения 1: 1 между пользователями и студентами, вы можете сделать следующее:

  • когда пользователь регистрируется, создайте пост студента
  • хранить идентификатор сообщения в качестве метаданных пользователя
  • используйте template_redirect для сообщений Student, чтобы проверить, разрешено ли пользователю видеть сообщение, и перенаправлять, если нет

Теперь, базовый подход к приведенному выше списку в коде:

 function generate_student_post($id) { // get the User object $user = get_user_by('id', $id); // now you can use something like $user->first_name and the like // set up the post ... $post = array( 'post_type' => 'student', // other post data ); // ... and save to databse $post_id = wp_insert_post($post); // maybe add some meta data? add_post_meta($post_id, 'YOUR-META-KEY', 'YOUR-META-VALUE'); // map the post to the user add_user_meta($id, 'student_post', $post_id, true); } // function generate_student_post add_action('user_register', 'generate_student_post'); function student_post_redirect() { global $post; if ( // check if we're about to show a Student post ... 'student' === $post->post_type && ( // ... and shouldn't ! is_user_logged_in() || ! ($user = wp_get_current_user()) || $post->ID !== get_user_meta($user->ID, 'student_post', true) ) ) { wp_redirect(home_url()); exit(); } } // function student_post_redirect add_action('template_redirect', 'student_post_redirect'); 

Обратите внимание, что этот код не проверен!

Рекомендации

  • get_user_by
  • wp_insert_post
  • add_post_meta
  • add_user_meta
  • get_user_meta
  • is_user_logged_in
  • wp_get_current_user
  • wp_redirect
  • home_url
  • add_action
  • user_register
  • template_redirect