在写文章的时候 也许你需要添加一些只对特殊用户才显示的内容 今天就分享一下 通过简码来隐藏文章的部分内容 只有符合条件的用户(比如 指定的用户、属于某种用户角色、拥有某种能力、是否登录等)才能查看
将下面的代码添加到主题的 functions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** * WordPress 根据用户名/用户角色/能力/是否登录等隐藏部分文章内容 * https://www.wpdaxue.com/eyes-only-user-access-shortcode.html */ 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; } |
以上代码添加了一个有多个参数可用的简码
1 |
[eyesonly][/eyesonly] |
参数为
1 2 3 4 |
logged="in|out" //必填参数,登录/登出 level="anyrole, any_capability" //必填参数,可以填写角色或能力 username="anyusername" // 必填参数,直接填写用户名 hide="yes" // 选填参数,是否隐藏 |
前三个必填参数至少使用其中一个 当然可以两个 或三个一起用
范例:
1 |
[eyesonly level="administrator, customrole, moderate_comments"] 任何内容 [/eyesonly] |
1 |
[eyesonly hide="yes" logged="out" level="subscriber customrole"] 任何内容 [/eyesonly] |
1 |
[eyesonly username="joebob, billyjean" level="administrator"] 任何内容 [/eyesonly] |
1 2 |
[eyesonly logged="in"] 已登录用户可见 [/eyesonly] [eyesonly logged="out"] 未登录用户可见 [/eyesonly] |
1 |
[eyesonly level="administrator"] 任何内容 [/eyesonly] |
1 |
[eyesonly hide="yes" level="administrator custom_capability"] 任何内容 [/eyesonly] |
代码出自:http://wordpress.org/plugins/eyes-only-user-access-shortcode/ 你可以访问该页面查看更多介绍
题外话 如果想要让特定内容对特定用户可见 可以使用如下代码
1 2 3 |
<?php global $user_ID; if( $user_ID && current_user_can('level_10') ) : ?> 此处为特定内容 <?php endif; ?> |
或者
1 2 3 4 5 |
<?php if ( $GLOBALS['user_login'] != 'admin' ) { echo '此处为特定内容'; } ?> |
2021年02月14日 23:13 沙发
厉害了老铁
2021年03月20日 12:38 板凳
不错,会代码一切都变得那么简单