it-swarm.com.de

Nur einem Autor die benutzerdefinierten Beitragstypen anzeigen

Ich habe eine Site mit 3 verschiedenen benutzerdefinierten Beitragstypen (Listings, Contacts, Events) und ca. 1600 Autoren. Ich möchte nur zeigen, dass der Autor seine Beiträge im Backend verfasst. Wenn sich also authorA anmeldet und auf "Listings" klickt, sehen sie nur ihre eigenen.

Ich habe diesen Code in Functions.php ausgeführt, um den ersten Beitragstyp zu steuern, bin mir aber nicht sicher, wie ich die anderen beiden steuern soll. Das Problem, das ich sehe, ist, dass, wenn authorA auf "Events" klickt, der Beitrag in "Listings" angezeigt wird.

    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' );

Also, ich denke, ich muss nur "Inserate" ändern, damit alle drei Post-Typen angezeigt werden, aber ich bin mir nicht sicher, wie ... Irgendwelche Gedanken?

2
Aaron

Wie @s_ha_dum in seinem Kommentar sagt, scheinen Ihre Beschreibung und Ihr Code unterschiedlich zu sein.

Wenn ich die Beschreibung verstehe, lautet der Code für das, was Sie tun möchten:

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' );

Mit dem obigen Code wird jedes Mal, wenn ein Benutzer, der im Backend angemeldet ist, eine Artikelliste mit CPT-Einträgen, -Kontakten und -Ereignissen benötigt, nur der von ihm selbst erstellte Beitrag angezeigt.

5
gmazzap