WordPress 後台文章列表限制作者只能看到他們自己的文章

有些多作者的網站會開放後台讓作者能自行進入後發表文章,但有時候網站管理員不希望該作者看到其他人的文章,這時候勾點 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;
	}
);

目錄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Picture of 賴俊吾 / Oberon Lai
賴俊吾 / Oberon Lai

現為全職 WordPress 工程師,網站開發經歷 11 年,專攻前端工程與 WordPress 佈景主題、外掛客製化開發

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!

專注於分享 WordPress 開發、接案技巧、專案管理等自由工作者必備知識與心得

© 2024 想點創意科技有限公司

想點創意科技有限公司 | 統一編號 90516823
Designed by Hend Design | 隱私權政策

訂閱電子報

Hi,我是 Oberon,我會固定在每週五早上發送接案心得以及與 WordPress 相關的電子報,同時也會分享一些實用的開發知識,讓你在 WordPress 的接案路上不孤單!