【问题标题】:User Roles Shortcode用户角色简码
【发布时间】:2017-01-28 07:55:00
【问题描述】:

我正在使用以下代码创建简码并检查用户角色:

function check_user_role( $atts, $content = null ) {
        extract( shortcode_atts( array(
                'role' => 'role' ), $atts ) );

        if( current_user_can( $role ) ) {
                return $content;
        }
}
add_shortcode( 'user_role', 'check_user_role' );

然后添加以下短代码以仅向所选角色显示内容 - 在本例中为“订阅者”

[user_role role="subscriber"]content[/user_role]

效果很好,但现在我想在短代码中添加“作者”,以向“订阅者”和“作者”显示内容

我已经尝试了显而易见的方法:

[user_role role="subscriber, author"]content[/user_role]

但这似乎不起作用。

我需要自己修改函数中的任何内容吗?

【问题讨论】:

    标签: php wordpress shortcode user-roles


    【解决方案1】:

    对我来说,有效的代码如下:

    function check_user_role( $atts, $content = null ) {
            extract( shortcode_atts( array(
                    'role' => 'role' ), $atts ) );
    
            $user = wp_get_current_user();
            $allowed_roles = explode(',', $role);
            if( array_intersect($allowed_roles, $user->roles ) ) {
                    return $content;
            }
    }
    add_shortcode( 'user_role', 'check_user_role' );
    

    我在Snippets plugin 的新片段中添加了这段代码。

    【讨论】:

      【解决方案2】:

      您必须尝试一下,以获得更多帮助

      https://wordpress.stackexchange.com/questions/131814/if-current-user-is-admin-or-editor

      function check_user_role( $atts, $content = null ) {
              extract( shortcode_atts( array(
                      'role' => 'role' ), $atts ) );
      
              $user = wp_get_current_user();
              $roles = explode(',', $user);
              $allowed_roles = array($roles);
              if( array_intersect($allowed_roles, $user->roles ) ) {
                      return $content;
              }
      }
      add_shortcode( 'user_role', 'check_user_role' );
      

      【讨论】:

        猜你喜欢
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 2019-09-07
        • 2018-01-23
        • 2022-12-19
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多