web-dev-qa-db-fra.com

Restreindre les contributeurs à afficher uniquement leurs propres types de publication personnalisés?

Pour notre type "Messages", nos contributeurs ne peuvent voir que leurs propres messages, ce que nous voulons. Mais pour nos types de publication personnalisés, les contributeurs peuvent voir chaque publication, y compris les brouillons. Existe-t-il un moyen de limiter l'affichage des publications personnalisées afin qu'elles ne voient que leurs propres publications, comme dans le type "Publications"?

Edit: Peut-être que je n’étais pas aussi clair sur mon problème. Je souhaite que les contributeurs puissent voir tous les types personnalisés (vidéos, images, etc.), mais au sein de chaque type personnalisé, je souhaite qu'ils ne puissent voir que leurs propres publications. Ainsi, s'ils visionnent les vidéos du CPT, par exemple, ils ne pourront voir que leurs propres vidéos postées, pas celles de quelqu'un d'autre.

4
user28330

Vous devez utiliser le hook d’action pre_get_posts .

Consultez les commentaires pour plus de détails et modifiez le (s) type (s) de publication personnalisée (s) à votre convenance:

add_action( 'pre_get_posts', 'filter_cpt_listing_by_author_wpse_89233' );

function filter_cpt_listing_by_author_wpse_89233( $wp_query_obj ) 
{
    // Front end, do nothing
    if( !is_admin() )
        return;

    global $current_user, $pagenow;
    get_currentuserinfo();

    // http://php.net/manual/en/function.is-a.php
    if( !is_a( $current_user, 'WP_User') )
        return;

    // Not the correct screen, bail out
    if( 'edit.php' != $pagenow )
        return;

    // Not the correct post type, bail out
    if( 'portfolio' != $wp_query_obj->query['post_type'] )
        return;

    // If the user is not administrator, filter the post listing
    if( !current_user_can( 'delete_plugins' ) )
        $wp_query_obj->set('author', $current_user->ID );
}

Vous remarquerez que le post compte All|Published|Drafts doit être corrigé.
Voir le solution here .

7
brasofilo