Search code examples
wordpressfilteradmincustom-post-typedashboard

Wordpress Filter dashboard custom post by user with relations


I have custom post type umowy which one have relationship with user. Relationship is adding by acf by editing user. What I want? I want to list in dashboard custom post type umowy all post which have relations with user logged in. I have code like that. And its showing post only for user login which one is author. Someone have idea for that?

add_action('pre_get_posts', 'filter_posts_list');
function filter_posts_list($query)
{
    //$pagenow holds the name of the current page being viewed
     global $pagenow, $typenow;  

    //$current_user uses the get_currentuserinfo() method to get the currently logged in user's data
     global $current_user;
     get_currentuserinfo();

        //Shouldn't happen for the admin, but for any role with the edit_posts capability and only on the posts list page, that is edit.php
        if(!current_user_can('administrator') && current_user_can('edit_posts') && ('edit.php' == $pagenow) &&  $typenow == 'umowy')
     { 
        //global $query's set() method for setting the author as the current user's id
        $query->set('author', $current_user->ID);
        }
}

Solution

  • I found answer:

    if(!current_user_can('administrator') && !current_user_can('obsluga') && ('edit.php' == $pagenow) &&  $typenow == 'umowy'){
    
        $key = 'użytkownik_sklep';
        $single = true;
        $shopIds = get_user_meta($current_user->data->ID, $key, $single); 
    
        $meta_query = array(
            array(
                'key'   => 'umowa_do_sklepu',
                'value' => $shopIds[0],
                'compare' => 'LIKE'
            )
        );
        $query->set( 'meta_key', 'umowa_do_sklepu' );
        $query->set( 'meta_query', $meta_query );
    
    }