Wordpress User Role Shortcode Параметр для использования имени вместо значения - PullRequest
0 голосов
/ 25 апреля 2020

Я создал шорткод для отображения контента на основе роли текущего пользователя, используя в качестве параметра значение role = 'administrator'. Однако сейчас она принимает только значение роли, но не принимает имя. Например:

[mcat_hide_content role = "administrator"] работает, но [mcat_hide_content role = "Administrator"] - нет.

Не имеет большого значения для ролей по умолчанию, состоящих из одного слова, но для ролей, созданных другими плагинами, значение отличается от имени роли. Например, роль SEO-менеджера использует role = "wpseo_manager", и обычный пользователь не знает, что его можно использовать в шорткоде, поэтому было бы предпочтительно, если бы role = "SEO Manager" прошел.

Мой код:

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( 'mcat_hide_content', 'check_user_role' );

Есть ли способ изменить это, чтобы я мог использовать фактическое имя роли пользователя, а не только его значение?

...