Implement a 'Mine' link on post listing screens in the admin area for all users who have authored posts. This feature was previously only available to users who cannot edit other users' posts (namely Authors and Contributors).
Props linuxologos, wonderboymusic Fixes #19609 git-svn-id: https://develop.svn.wordpress.org/trunk@34360 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
ce126c10c0
commit
f80add733c
@ -79,16 +79,18 @@ class WP_Posts_List_Table extends WP_List_Table {
|
||||
|
||||
$post_type = $this->screen->post_type;
|
||||
$post_type_object = get_post_type_object( $post_type );
|
||||
|
||||
if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) {
|
||||
$exclude_states = get_post_stati( array( 'show_in_admin_all_list' => false ) );
|
||||
$exclude_states = get_post_stati( array(
|
||||
'show_in_admin_all_list' => false,
|
||||
) );
|
||||
$this->user_posts_count = $wpdb->get_var( $wpdb->prepare( "
|
||||
SELECT COUNT( 1 ) FROM $wpdb->posts
|
||||
WHERE post_type = %s AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' )
|
||||
SELECT COUNT( 1 )
|
||||
FROM $wpdb->posts
|
||||
WHERE post_type = %s
|
||||
AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' )
|
||||
AND post_author = %d
|
||||
", $post_type, get_current_user_id() ) );
|
||||
|
||||
if ( $this->user_posts_count && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) )
|
||||
if ( $this->user_posts_count && ! current_user_can( $post_type_object->cap->edit_others_posts ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) {
|
||||
$_GET['author'] = get_current_user_id();
|
||||
}
|
||||
|
||||
@ -262,6 +264,7 @@ class WP_Posts_List_Table extends WP_List_Table {
|
||||
|
||||
$current_user_id = get_current_user_id();
|
||||
$all_args = array( 'post_type' => $post_type );
|
||||
$mine = '';
|
||||
|
||||
if ( $this->user_posts_count ) {
|
||||
if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) {
|
||||
@ -283,7 +286,7 @@ class WP_Posts_List_Table extends WP_List_Table {
|
||||
number_format_i18n( $this->user_posts_count )
|
||||
);
|
||||
|
||||
$status_links['mine'] = $this->get_edit_link( $mine_args, $mine_inner_html, $class );
|
||||
$mine = $this->get_edit_link( $mine_args, $mine_inner_html, $class );
|
||||
|
||||
$all_args['all_posts'] = 1;
|
||||
$class = '';
|
||||
@ -310,6 +313,9 @@ class WP_Posts_List_Table extends WP_List_Table {
|
||||
);
|
||||
|
||||
$status_links['all'] = $this->get_edit_link( $all_args, $all_inner_html, $class );
|
||||
if ( $mine ) {
|
||||
$status_links['mine'] = $mine;
|
||||
}
|
||||
|
||||
foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) {
|
||||
$class = '';
|
||||
|
Loading…
Reference in New Issue
Block a user