如何将WordPress用户角色代码转换为WP快捷码?

时间:2020-05-27 作者:Maurice

我想学习如何创建检查用户角色的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]
有什么建议吗?

1 个回复
最合适的回答,由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,则不会返回任何内容,或者可能会返回类似“不允许您查看此内容”的字符串。

希望这有帮助!

相关推荐

What does this shortcode do?

function my_shortcode($atts, $content = null){ extract(shortcode_atts(array(\"type\" => \"warrning\"), $atts)); return \".$content.\"; } add_shortcode(\"warrning_dialog\", \"my_shortcode\"); 我知道它会创建短代码[warning\\u dialo