it-swarm.com.de

Aktualisieren Sie die Anzahl der Posts (veröffentlicht, Entwurf, nicht angefügt) in der Administrationsoberfläche

Ich arbeite an einem Mehrbenutzer-WordPress-Setup und habe es so gestaltet, dass ein bestimmter Benutzertyp nur die von ihm verfassten Beiträge, Bilder, Seiten usw. sehen und damit interagieren kann. Der Code dafür sieht folgendermaßen aus:

add_filter('pre_get_posts', 'current_author_posts');

function current_author_posts($query) {

    if ($query->is_admin && current_user_can('artist')) {
        global $user_ID;
        $query->set('author', $user_ID);
    }

    return $query;
}

Dies funktioniert gut in der Admin-Oberfläche, lässt jedoch alle Postcounts falsch angezeigt:

image that shows incorrect post counts within WordPress

Kennen Sie Filter oder Haken, mit denen Sie diese Zahlen manipulieren und die für alle Posts, Seiten, Medien und benutzerdefinierten Post-Typen korrekt sind?

Danke vielmals.

8
Scott

Zum Zeitpunkt des Schreibens befindet sich diese Funktionalität nun in der Klasse WP_List_Table in der Methode "views ()".

Der Filter sieht nun so aus:

$views = apply_filters( "views_{$this->screen->id}", $views );

$ views enthält ein Array von jedem Listenelement:

[19-Feb-2016 11:43:44 UTC] Array
(
  [all] => <a href="link_to_view" class="current">Alle <span class="count">(1)</span></a>
  [trash] => <a href="link_to_view">Trash <span class="count">(94)</span></a>
  [confirmed] => <a href="link_to_view">Confirmed <span class="count">(1)</span></a>
)

Sie können es mit einer Priorität> 10 an den Hook current_screen anschließen:

add_action( 'current_screen', function ( $current_screen ) {
        if ($current_screen->id === 'edit-my_page')
            add_filter( "views_{$current_screen->id}", 'list_table_views_filter' );
    }, 20);

function list_table_views_filter( array $view ) {
    error_log(print_r($view, true));
    return $view;
}

Sie können dann Elemente in der Liste hinzufügen/ändern/entfernen.

3
DarkNeuron