writing_wordpress

[WordPress]依照使用者權限隱藏後台選單,以 Jetpack 為例

在多人共筆的狀況下,依照每個人的權限與等級,應該會顯示不同的功能。有些功能可以被大家看見,並且使用,但是有些功能就應該要只有管理者才能看得到。那麼接下來我們就來看看要怎麼透過簡單的幾行程式,隱藏某些功能,並且禁止使用者使用這些功能。

1. 隱藏 Jetpack 選單

Jetpack 是一個由 WordPress 官方釋出的一個好用的外掛,個人覺得裡面最重要的功能就是免費的圖片 cdn。可以大幅減輕你的伺服器流量。但是當你安裝完 Jetpack 後,預設的選單是可以被任何共筆會員看見,並且可以任意修改的

那要怎麼隱藏它,只讓管理者可以看到呢?

wp-includes/functions.php 中複製貼上以下程式碼

//除了管理者,其他人都不能看到 jetpack 選項
function pinkstone_remove_jetpack() {
	if( class_exists( 'Jetpack' ) && !current_user_can( 'manage_options' ) ) {
		remove_menu_page( 'jetpack' );
	}
}
add_action( 'admin_init', 'pinkstone_remove_jetpack' );

使用 current_user_can 檢查使用者有沒有 manage_options 的權限,因為有 manage_options 權限的才是管理者。

2. 禁止沒有權限的使用者連到 Jetpack 管理頁面

隱藏 Jetpack 選單後,使用者雖然看不到選單,但是如果他知道網址的話,其實是可以隨時連進去的。這個時候,你就必須找到 Jetpack 的管理頁面 wp-content/plugins/jetpack/jetpack.php

在檔案最開頭加上權限判別如下,只要一連進去 jetpack 頁面,就會檢查權限是否包含 manage_options ,如果不包含就直接 return 離開。

require_once(ABSPATH . '/wp-includes/pluggable.php');
if(!current_user_can( 'manage_options' )){  
  return;
}

圖片來源: vector designed by Freepik

標籤: , , ,

很愛畫虎爛的我,開始了用文章唬爛社會大眾的志業!