Impedir que o usuário edite outros posts

Eu declarei um novo tipo de publicação e é visível no menu admin: function create_post_type () {

register_post_type( 'employer_fm', array( 'labels' => array( 'name' => _x('Employer', 'Employers'), 'singular_name' => _x('Employer ', 'domain'), ), 'public' => true, 'capability_type' => array('employer','employers','adminstrator'), 'supports' => array('title','author','thumbnail','page-attributes'), 'capabilities' => array( 'read_post' => 'read_employer', 'publish_posts' => 'publish_employer', 'edit_posts' => 'edit_employers', 'edit_others_posts' => 'edit_others_employer', 'delete_posts' => 'delete_employer', 'delete_others_posts' => 'delete_others_employer', 'edit_others_pages' => 'edit_others_employer_page', 'read_private_posts' => 'read_private_employer', 'edit_post' => 'edit_employer', 'delete_post' => 'delete_employer', ), ) ); } 

Eu também declarou papéis:

 $result = add_role( 'employer', __( 'Employer' ), array( 'edit_employer' => true, 'edit_employers' => true, 'publish_employer' => true, 'read_employer' => true, 'delete_employer'=> true, 'edit_others_employer' => false, 'delete_others_employer' => false, 'edit_others_employer_page' => false ) ); $role = get_role( 'administrator' ); $role->add_cap( 'edit_employer' ); $role->add_cap( 'read_employer' ); $role->add_cap( 'delete_employer' ); $role->add_cap( 'edit_employers' ); $role->add_cap( 'publish_employer' ); 

se 'map_meta_cap' => true, usuários só podem visualizar e publicar posts (incluindo o administrador) e se ele não definir todos os usuários podem editar todas as postagens do tipo empregador.

Como posso evitar que os tipos de usuários do employer editem outras postagens?

Solutions Collecting From Web of "Impedir que o usuário edite outros posts"

Uma possibilidade é que você adicione por meio de um filtro, verifique os direitos e somente usuários com sua ID de usuário em cada postagem podem alterar essas postagens.

O exemplo seguinte faz isso, mas você deve aprimorar uma verificação para o seu tipo de postagem personalizado, se você apenas permitir isso no seu CPT.

 /** * Plugin Name: Display only own posts */ add_filter( 'pre_get_posts', 'fb_pre_get_posts' ); function fb_pre_get_posts( $queryobj ) { if ( ! current_user_can( 'edit_users' ) ) $queryobj->query_vars[ 'author' ] = get_current_user_id(); return $queryobj; } 

Existe uma capacidade separada para publicações publicadas:

  $role->add_cap( 'edit_published_employers' );