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:
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.
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.