性价比最高的香港ASP、PHP主机提供商
做网站,就上凡科建站

WordPress 根据用户名/用户角色/能力/是否登录等隐藏部分文章内容

Loading
1
Comodo SLL证书促销 - 免费ssl证书申请_ssl证书购买_ev ssl证书_https证书购买 - GDCA_数安时代

在写文章的时候,也许你需要添加一些只对特殊用户才显示的内容,今天就分享一下,通过简码来隐藏文章的部分内容,只有符合条件的用户(比如 指定的用户、属于某种用户角色、拥有某种能力、是否登录等)才能查看。

将下面的代码添加到主题的 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]

内容只有 ‘administrator’ 和自定义角色 ‘customrole’,以及拥有能力 ‘moderate_comments’ 的用户可见

1
[eyesonly hide="yes" logged="out" level="subscriber customrole"] 任何内容 [/eyesonly]

内容对 未登录用户、以及 ‘subscriber’ 或 ‘customrole’ 这两种角色的用户都隐藏

1
[eyesonly username="joebob, billyjean" level="administrator"] 任何内容 [/eyesonly]

内容只有 administrator 这种角色的用户、以及用户名为 ‘joebob’ 和 ‘billyjean’ 的用户(不一定是 administrator 角色)可见

1
2
[eyesonly logged="in"] 已登录用户可见 [/eyesonly]
[eyesonly logged="out"] 未登录用户可见 [/eyesonly]

在同一个位置显示内容,对已登录和未登录用户显示不同内容

1
[eyesonly level="administrator"] 任何内容 [/eyesonly]

只有 administrator 角色的用户可见

1
[eyesonly hide="yes" level="administrator custom_capability"] 任何内容 [/eyesonly]

内容对 administrator 角色的用户、以及拥有能力 ‘custom_capability’  的用户隐藏

代码出自:http://wordpress.org/plugins/eyes-only-user-access-shortcode/ 你可以访问该页面查看更多介绍。

支付宝扫码打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

MetInfo | 最适合企业网站建设的cms系统

关于 倡萌

一个疯狂的 WordPress 爱好者,喜欢折腾 WordPress 主题,分享 WordPress 资源。如果你也喜欢 WordPress,欢迎和我一起交流!

精彩推荐

WordPress 投稿文章状态改变时发送邮件通知

WordPress 投稿文章状态改变时发送邮件通知

WordPress 用户注册后自动登录/首次登录跳转到指定页面

7 条评论

  1. eyes only有汉化版吗

  2. 隐藏后的提示呢? 有提示吗? 可以自定义提示信息吗?

  3. 对部分内容隐藏后,为什么没有提示说对该内容影响。登录可见或其他?

  4. 这要是个插件就好了

  5. 嘿,写出直接安装eyesonly即可实现这个操作更好了,给那些不太喜欢折腾的孩纸们~

发表评论