WordPress實現角色權限等級、是否登入等隱藏部分文章內容(純代碼不外掛)
文章目錄
- 首先,我們完成wordpress後,我們希望一些文章給
- 不同權限的會員閱讀
- 登入後才能樂讀
- 自創角色才可以閱讀
- 又不想使用外掛,那我們可以使用以下代碼來完成
- 第一步,開啟主題 functions.php,將下面代碼貼入
- 第二步,以上代碼添加了一個有多個參數可用的簡碼:
- [eyesonly][/eyesonly]
- 參數為:
- logged="in|out" //必填參數,登入/登出
- level="anyrole, any_capability" //必填參數,可以填寫角色或能力
- username="anyusername" // 必填參數,直接填寫用戶名
- hide="yes" // 選填參數,是否隱藏
- 註:前三個必填參數至少使用其中一個,當然可以兩個,或三個一起用。
- 範例一:如果你想讓內容只有 ‘administrator’ 和自訂角色 ‘customrole’,以及擁有能力 ‘moderate_comments’ 的用戶可見
- 你調用的代碼則是
- [cc lang="php"] [eyesonly level="administrator, customrole, moderate_comments"] 任何內容 [/eyesonly] [/cc]
- 範例二:內容對未登入者隱藏、以及 ‘subscriber’ 或 ‘customrole’ 這兩種角色的用戶都隱藏
- 調用的代碼則是[cc lang="php"] [eyesonly hide="yes" logged="out" level="subscriber customrole"] 任何內容 [/eyesonly] [/cc]
- 範例三:內容只有 administrator 這種角色的用戶、以及用戶名為 ‘joebob’ 和 ‘billyjean’ 的用戶(不一定是 administrator 角色)可見
- 調用的代碼則是
- [cc lang="php"] [eyesonly username="joebob, billyjean" level="administrator"] 任何內容 [/eyesonly] [/cc]
- 範例四:在同一個位置顯示內容,對已登錄和未登錄使用者顯示不同內容
- 調用的代碼則是
- [cc lang="php"] [eyesonly logged="in"] 已登錄用戶可見 [/eyesonly]2. [eyesonly logged="out"] 未登錄用戶可見 [/eyesonly] [/cc]
- 範例五:只有 administrator 角色的用戶可見
- 調用的代碼則是
- [cc lang="php"] [eyesonly level="administrator"] 任何內容 [/eyesonly] [/cc]
- 範例六:內容對 administrator 角色的使用者、以及擁有能力 ‘custom_capability’ 的用戶隱藏
- 調用的代碼則是
- [cc lang="php"] [eyesonly hide="yes" level="administrator custom_capability"] 任何內容 [/eyesonly] [/cc]
- 現在,大家有看過六種不同調閱代碼的範例,大體而言應該會使用了吧!
- 若要更詳細,可以參考https://wordpress.org/plugins/eyes-only-user-access-shortcode/
首先,我們完成wordpress後,我們希望一些文章給
不同權限的會員閱讀
登入後才能樂讀
自創角色才可以閱讀
又不想使用外掛,那我們可以使用以下代碼來完成
第一步,開啟主題 functions.php,將下面代碼貼入
[cc lang="php"] //WordPress實現角色權限等級、是否登入等隱藏部分文章內容 add_shortcode('eyesonly', 'sc_eyesonly'); function sc_eyesonly($atts, $content = null) { extract(shortcode_atts(array('username' => null, 'level' => null, 'logged' => null,'hide' => null,),$atts)); if (!$hide || $hide === 'no' || $hide === 'false'){$pre = null; $thecontent = do_shortcode($content);} if ($hide && $hide !== 'no' && $hide !== 'false'){$pre = do_shortcode($content); $thecontent = null;} $showcontent = $pre; $current_user = wp_get_current_user(); $users = preg_split("/[s,]+/",$username); $levels = preg_split("/[s,]+/",$level); foreach($users as $name){if($username && $current_user->user_login === $name){$showcontent = $thecontent;}} foreach($levels as $value){if($level && current_user_can($value)){$showcontent = $thecontent;}} if($logged && is_user_logged_in() && $logged === 'in'){$showcontent = $thecontent;} if($logged && !is_user_logged_in() && $logged === 'out'){$showcontent = $thecontent;} return $showcontent; } [/cc]
第二步,以上代碼添加了一個有多個參數可用的簡碼:
[eyesonly][/eyesonly]
參數為:
[cc lang="php"] // ogged="in|out" //必要數值,登入/登出 // level="anyrole, any_capability" //必要數值,可以填寫角色或能力,或自創角色 // username="anyusername" // 必填參數,直接填寫用戶名 // hide="yes" // 選填數值,是否隱藏 [/cc]