有些多作者的網站會開放後台讓作者能自行進入後發表文章,但有時候網站管理員不希望該作者看到其他人的文章,這時候勾點 pre_get_posts
又可以派上用場了,主要的邏輯是先判斷目前所在頁面是否為後台的文章列表頁,然後檢查目前登入者的角色,如果是作者的話把查詢參數多設定一個 author
的條件,並指定為目前登入者的 User ID,這樣就可以確保作者只會看到自己發表的文章,程式碼如下:
<?php
/**
* 限制作者在後台只能看到他們自己發表的文章
*/
add_filter(
'pre_get_posts',
function( $query ) {
global $pagenow;
if ( 'edit.php' !== $pagenow || ! $query->is_admin ) {
return $query;
}
$user = wp_get_current_user();
if ( ! current_user_can( 'manage_options' ) && in_array( 'author', (array) $user->roles ) ) {
$query->set( 'author', $user->ID );
}
return $query;
}
);