Skip to main content
4 of 4
Code formatting improvements, fix grammar error in word 'contributor'

current_user_can( 'edit_post', $post_id ) does not work for contributer but for administrator

I have a custom post type named project which has

'capability_type' => 'post'

while registering using register_post_type.

In my theme files and also functions.php file, I have situations where I should check if the project to be edited is authored by the user or not.

So I use this:

if ( !current_user_can( 'edit_post', $porject_id ) ) return;

where $project_id is post id of the project to be edited.

For example I have a page template named single_project.php where I can show single posts in project post type to users and I want these people can see each project single page:

  1. administrators
  2. editors
  3. the contributor (post author)

but using the above code, It is ok with administrators and editors, while not for the contributor himself!

When I use:

var_dump( current_user_can( 'edit_post', $project_id ) );

with the contributor logged-in account, it returns false, while this:

var_dump( current_user_can( 'edit_posts' ) ); // (with trailing 's')

returns true (but for every post, not just does for him).

Any help with this?

WordPress Speed
  • 2.3k
  • 3
  • 19
  • 33