I have a custom user role and I want to display all custom website posts to them, without letting them edit/delete them. Right now the custom post doesn't show up in their dashboard. I know it will show up when I add the edit and delete caps, but I only want them to be able to see their "websites". Ultimately they only get to see the websites that have a custom field that is a relation to the client user. So client1 can only see websites of client1, etc. I have the following code:

// Add the Client user role
function add_client_user_role() {

  $capabilities = array(
        'read'                           => true,
    'read_website'           => true

  add_role( 'client', 'Client' );

    $client = get_role( 'client' );
    $client->add_cap( 'read' );
    $client->add_cap( 'read_website' );


add_action( 'init', 'add_client_user_role', 10 );

How can I achieve this?

EDIT: Ok, I found the hook restrict_manage_posts which I can use to show only the posts assigned to them. Now I still need a way to make sure they show up, without letting them edit the posts. So the custom Post should show up in the dashboard without me giving them caps to edit.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.