web-dev-qa-db-fra.com

Afficher uniquement les auteurs d'un type d'auteur

J'ai un site avec 3 types de messages personnalisés différents (Inscriptions, Contacts, Événements) et environ 1600 "auteurs". Ce que je cherche à faire, c’est montrer seulement à cet auteur ses publications dans le backend. Ainsi, lorsque authorA se connecte et clique sur "Listes", il ne voit que les siennes.

J'ai ce code fonctionnant dans Functions.php pour contrôler le premier type de publication, mais je ne sais pas comment contrôler les deux autres. Le problème que je vois est que, lorsque authorA clique sur "Événements", son message figurant dans "Listes" s'affiche.

    function __set_all_posts_for_author( &$query )
{
    if ( $query->is_author )
        $query->set( 'post_type', 'listings' );
    remove_action( 'pre_get_posts', '__set_all_posts_for_author' ); // run once!
}
add_action( 'pre_get_posts', '__set_all_posts_for_author' );

Donc, je pense que je dois juste changer les "listes" pour les trois types de publications, mais je ne suis pas sûr de savoir comment .... Des pensées?

2
Aaron

Comme @s_ha_dum le dit dans son commentaire, votre description et votre code semblent être différents.

Si je comprends la description, le code à faire ce que vous voulez est:

function __set_all_posts_for_author( $query ) {
  if ( is_admin() && is_post_type_archive( array('listings', 'contacts', 'events') ) ) {
    $current_user = wp_get_current_user();
    $query->set( 'author', $current_user->ID );
  }
}
add_action( 'pre_get_posts', '__set_all_posts_for_author' );

En utilisant le code ci-dessus, chaque utilisateur connecté au backend requiert la liste des éléments "Annonces", "Contacts" et "Evénements" du CPT, il ne verra que le message créé par lui-même.

5
gmazzap