add_action( 'pre_get_posts', 'query_set_only_author' );
function query_set_only_author( $wp_query ) {
global $current_user;
if ( !current_user_can( 'administrator' ) && is_admin() ) {
$wp_query->set( 'author', $current_user->ID );
$screen= get_current_screen();
add_filter( 'views_' . $screen->id, 'indivisual_post_counts' );
}
}
function indivisual_post_counts( $views ) {
global $current_user, $wp_query;
$screen= get_current_screen();
$views= array();
$class= '';
$types = array( 'all', 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash', );
$html = '<a href="%1$s" %3$s>%4$s<span class="count">(%2$d)</span></a>';
foreach ( $types as $type ) {
$sticky = get_option( 'sticky_posts' );
$query = array(
'author' => $current_user->ID,
'post_type' => 'post',
'post_status' => $type,
'post__not_in' => $sticky,
);
$result = new WP_Query( $query );
if( array_search( $wp_query->query_vars[ 'post_status' ], $types ) ) {
$class = $wp_query->query_vars[ 'post_status' ];
}
if ( !empty( $result->found_posts) && 'edit'== $screen->base ) {
$views[ $type ] = sprintf( $html,
admin_url( 'edit.php?post_status=' . $type . '&post_type=post' ),
$result->found_posts,
current_class_helper( $type, $class, false ),
ucfirst( $type )
);
}
wp_reset_postdata();
}
return $views;
}
function current_class_helper( $helper, $current, $echo ) {
if ( (string) $helper=== (string) $current )
$result= ' class="current"';
else
$result= '';
if ( $echo )
echo $result;
return $result;
}
備考:メディアライブラリをリスト形式で開いた時に、フィルターのセレクトボックスは、すべての選択肢が表示されてしまう。
https://ja.forums.wordpress.org/topic/152894?replies=3
