WordPress實現角色權限等級、是否登入等隱藏部分文章內容(純代碼不外掛)

文章目錄

  1. 首先,我們完成wordpress後,我們希望一些文章給
  2. 不同權限的會員閱讀
  3. 登入後才能樂讀
  4. 自創角色才可以閱讀
  5. 又不想使用外掛,那我們可以使用以下代碼來完成
  6. 第一步,開啟主題 functions.php,將下面代碼貼入topics_line
  7. 第二步,以上代碼添加了一個有多個參數可用的簡碼:
  8.  [eyesonly][/eyesonly]
  9. 參數為:
  10. topics_linelogged="in|out" //必填參數,登入/登出
  11. level="anyrole, any_capability" //必填參數,可以填寫角色或能力
  12. username="anyusername" // 必填參數,直接填寫用戶名
  13. hide="yes" // 選填參數,是否隱藏topics_line
  14. 註:前三個必填參數至少使用其中一個,當然可以兩個,或三個一起用。
  15. 範例一:如果你想讓內容只有administrator’ 和自訂角色 ‘customrole’,以及擁有能力 ‘moderate_comments’ 的用戶可見
  16. 你調用的代碼則是
  17. topics_line [cc lang="php"] [eyesonly level="administrator, customrole, moderate_comments"] 任何內容 [/eyesonly] [/cc] topics_line

  18. 範例二:內容對未登入者隱藏、以及 ‘subscriber’ 或 ‘customrole’ 這兩種角色的用戶都隱藏
  19. 調用的代碼則是topics_line[cc lang="php"] [eyesonly hide="yes" logged="out" level="subscriber customrole"] 任何內容 [/eyesonly] [/cc]topics_line

  20. 範例三:內容只有 administrator 這種角色的用戶、以及用戶名為 ‘joebob’ 和 ‘billyjean’ 的用戶(不一定是 administrator 角色)可見
  21. 調用的代碼則是
  22. topics_line [cc lang="php"] [eyesonly username="joebob, billyjean" level="administrator"] 任何內容 [/eyesonly] [/cc] topics_line

  23. 範例四:在同一個位置顯示內容,對已登錄和未登錄使用者顯示不同內容
  24. 調用的代碼則是
  25. topics_line [cc lang="php"] [eyesonly logged="in"] 已登錄用戶可見 [/eyesonly]2. [eyesonly logged="out"] 未登錄用戶可見 [/eyesonly] [/cc] topics_line

  26. 範例五:只有 administrator 角色的用戶可見
  27. 調用的代碼則是
  28. topics_line [cc lang="php"] [eyesonly level="administrator"] 任何內容 [/eyesonly] [/cc] topics_line
  29. 範例六:內容對 administrator 角色的使用者、以及擁有能力 ‘custom_capability’  的用戶隱藏
  30. 調用的代碼則是
  31. topics_line [cc lang="php"] [eyesonly hide="yes" level="administrator custom_capability"] 任何內容 [/eyesonly] [/cc] topics_line
  32. 現在,大家有看過六種不同調閱代碼的範例,大體而言應該會使用了吧!
  33. 若要更詳細,可以參考https://wordpress.org/plugins/eyes-only-user-access-shortcode/
首先,我們完成wordpress後,我們希望一些文章給
不同權限的會員閱讀
登入後才能樂讀
自創角色才可以閱讀
又不想使用外掛,那我們可以使用以下代碼來完成
第一步,開啟主題 functions.php,將下面代碼貼入topics_line

[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]

topics_linelogged="in|out" //必填參數,登入/登出
level="anyrole, any_capability" //必填參數,可以填寫角色或能力
username="anyusername" // 必填參數,直接填寫用戶名
hide="yes" // 選填參數,是否隱藏topics_line
註:前三個必填參數至少使用其中一個,當然可以兩個,或三個一起用。
範例一:如果你想讓內容只有administrator’ 和自訂角色 ‘customrole’,以及擁有能力 ‘moderate_comments’ 的用戶可見
你調用的代碼則是
topics_line [cc lang="php"] [eyesonly level="administrator, customrole, moderate_comments"] 任何內容 [/eyesonly] [/cc] topics_line


範例二:內容對未登入者隱藏、以及 ‘subscriber’ 或 ‘customrole’ 這兩種角色的用戶都隱藏
調用的代碼則是topics_line[cc lang="php"] [eyesonly hide="yes" logged="out" level="subscriber customrole"] 任何內容 [/eyesonly] [/cc]topics_line


範例三:內容只有 administrator 這種角色的用戶、以及用戶名為 ‘joebob’ 和 ‘billyjean’ 的用戶(不一定是 administrator 角色)可見
調用的代碼則是
topics_line [cc lang="php"] [eyesonly username="joebob, billyjean" level="administrator"] 任何內容 [/eyesonly] [/cc] topics_line


範例四:在同一個位置顯示內容,對已登錄和未登錄使用者顯示不同內容
調用的代碼則是
topics_line [cc lang="php"] [eyesonly logged="in"] 已登錄用戶可見 [/eyesonly]2. [eyesonly logged="out"] 未登錄用戶可見 [/eyesonly] [/cc] topics_line


範例五:只有 administrator 角色的用戶可見
調用的代碼則是
topics_line [cc lang="php"] [eyesonly level="administrator"] 任何內容 [/eyesonly] [/cc] topics_line

範例六:內容對 administrator 角色的使用者、以及擁有能力 ‘custom_capability’  的用戶隱藏
調用的代碼則是
topics_line [cc lang="php"] [eyesonly hide="yes" level="administrator custom_capability"] 任何內容 [/eyesonly] [/cc] topics_line

現在,大家有看過六種不同調閱代碼的範例,大體而言應該會使用了吧!
若要更詳細,可以參考https://wordpress.org/plugins/eyes-only-user-access-shortcode/

評論 (0)

此處尚未發表評論

留言

  1. 以遊客身份發表評論。 註冊登入到您的帳戶。
附件 (0 / 3)
分享您的位置