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

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

Loading
1
天猫淘宝优惠券仅在搜码网!

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

将下面的代码添加到主题的 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/ 你可以访问该页面查看更多介绍。

支付宝扫码打赏 微信打赏

如果本文对你有帮助,请打赏作者,鼓励我们继续写作!

WordPress快站:让WordPress建站更简单

关于 倡萌

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

精彩推荐

使用 WP Custom Register Login 添加前台注册、登录、找回密码

使用 WP Custom Register Login 添加前台注册、登录、找回密码

WordPress 用户管理插件 WP User Manager

WordPress 用户管理插件 WP User Manager

7 条评论

  1. eyes only有汉化版吗

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

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

  4. 这要是个插件就好了

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

发表评论