Ketika web berbasis wordpress terdapat banyak penulis, ada baiknya setiap penulis hanya mengetahui dan melihat jumlah post mereka saja.
Melihat semua post mungkin akan mengganggu fokus dan privacy blog yang bersangkutan. Ada beberapa alasan dan pentingnya menyembunyikan seluruh post bagi penulis
Berikut adalah code yang dapat menyembunyikan post agar author hanya dapat melihat post mereka saja.
//Dosenit.com author seet thier own post function posts_for_current_author($query) { global $pagenow; if( 'edit.php' != $pagenow || !$query->is_admin ) return $query; if( !current_user_can( 'edit_others_posts' ) ) { global $user_ID; $query->set('author', $user_ID ); } return $query; } add_filter('pre_get_posts', 'posts_for_current_author');
Kode ini memungkinkan setiap pengguna dengan kemampuan untuk mengedit posting orang lain untuk melihat semua posting.
Ini berarti editor dan administrator akan dapat melihat semua posting.
Pengguna dengan peran lain seperti kontributor atau penulis hanya akan melihat posting mereka sendiri.
Jika ingin memperbaiki count atau jumlah postnya sesuai dengan user, maka dapat mengganti code di atas dengan menggunakan code di bawah ini :
/*only show thier post*/add_action('pre_get_posts', 'query_set_only_author' ); function query_set_only_author( $wp_query ) { global $current_user; if( is_admin() && !current_user_can('edit_others_posts') ) { $wp_query->set( 'author', $current_user->ID ); add_filter('views_edit-post', 'fix_post_counts'); } } // Fix post counts function fix_post_counts($views) { global $current_user, $wp_query; unset($views['mine']); $types = array( array( 'status' => NULL ), array( 'status' => 'publish' ), array( 'status' => 'draft' ), array( 'status' => 'pending' ), array( 'status' => 'trash' ) ); foreach( $types as $type ) { $query = array( 'author' => $current_user->ID, 'post_type' => 'post', 'post_status' => $type['status'] ); $result = new WP_Query($query); if( $type['status'] == NULL ): $class = ($wp_query->query_vars['post_status'] == NULL) ? ' class="current"' : ''; $views['all'] = sprintf( '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>', admin_url('edit.php?post_type=post'), $class, $result->found_posts, __('All') ); elseif( $type['status'] == 'publish' ): $class = ($wp_query->query_vars['post_status'] == 'publish') ? ' class="current"' : ''; $views['publish'] = sprintf( '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>', admin_url('edit.php?post_type=post'), $class, $result->found_posts, __('Publish') ); elseif( $type['status'] == 'draft' ): $class = ($wp_query->query_vars['post_status'] == 'draft') ? ' class="current"' : ''; $views['draft'] = sprintf( '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>', admin_url('edit.php?post_type=post'), $class, $result->found_posts, __('Draft') ); elseif( $type['status'] == 'pending' ): $class = ($wp_query->query_vars['post_status'] == 'pending') ? ' class="current"' : ''; $views['pending'] = sprintf( '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>', admin_url('edit.php?post_type=post'), $class, $result->found_posts, __('Pending') ); elseif( $type['status'] == 'trash' ): $class = ($wp_query->query_vars['post_status'] == 'trash') ? ' class="current"' : ''; $views['trash'] = sprintf( '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>', admin_url('edit.php?post_type=post'), $class, $result->found_posts, __('Trash') ); endif; } return $views; }