我想学习如何创建检查用户角色的WordPress快捷码。
如果WP用户具有用户角色“member1”,则显示内容。否则,不显示任何内容。
这是我必须检查用户角色的WordPress代码:
$user = wp_get_current_user();
if ( in_array( \'member1\', (array) $user->roles ) ) {
//The user has the "member1" role
}
我还知道如何创建短代码,如下所示:
add_shortcode( \'check-user-role\', \'func_check_user_role\' );
func_check_user_role() {
}
但我如何将两者结合到这样的工作中(检查用户是否具有“member1”用户角色:
[check-user-role=\'member1\']show this content if the user has user role member1[/check-user-role]
有什么建议吗?
最合适的回答,由SO网友:rank 整理而成
您可以将参数添加到shortcode函数中,并使用此值检查是否允许用户查看内容:
function func_check_user_role( $atts, $content = null ) {
$user = wp_get_current_user();
$user_role = $atts[\'role\'];
$allowed_roles = [];
array_push($allowed_roles , $user_role);
if ( is_user_logged_in() && array_intersect($allowed_roles, $user->roles ) ) {
return $content;
} else {
return \'\';
}
}
add_shortcode( \'check-user-role\', \'func_check_user_role\' );
您的短代码如下所示:
[check-user-role role="subscriber"] Your content [/check-user-role]
因此
$atts
是您的属性
$content
是您的帖子内容。
查看文档:
https://developer.wordpress.org/plugins/shortcodes/shortcodes-with-parameters/
您将价值保存在
$user_role
变量并检查,如果您的用户已登录并且具有用户对象内部的角色(您在
$user
). 如果这是真的,则返回内容。如果不是true,则不会返回任何内容,或者可能会返回类似“不允许您查看此内容”的字符串。
希望这有帮助!