Условный тег, основанный на роли автора в author.php


Существует ли какой-либо способ отображения различных данных в шаблоне профиля author.php в зависимости от роли отображаемого профиля? (НЕ того, кто его просматривает, а автора, на которого ссылается этот конкретный профиль).

Если отображается профиль автора с ролью editor, то будет отображаться некоторое содержимое, а если профиль принадлежит автору с ролью contributor, то будут отображаться некоторые другие материалы.

Я нигде не нашел ответа на этот вопрос пока. Можно ли это сделать?

Author: Pieter Goosen, 2014-10-09

2 answers

current_user_can не дает желаемого результата при работе с ролями. Существует билет trac #22624, объясняющий все это. Он был закрыт следующим

  • Ключевые слова закрыты удалены

  • Этап, ожидающий рассмотрения, удален

  • Разрешение установлено на wontfix

  • Статус изменен с нового на закрытый

Мое решение состояло бы в том, чтобы получить роль рекомендуемого пользователя и затем проверьте это на соответствие определенным ролям

Первым делом нужно было бы получить роль автора с помощью get_queried_object()->roles, а затем проверить, находится ли желаемая роль в массиве, и если это так, сделайте что-нибудь. Вот код

$user_role = get_queried_object()->roles[0];

if( in_array( strtolower('Editor'), $user_role ) ) {
    //Do something for Editor
}elseif( in_array( strtolower('Contributor'), $user_role ) ) { 
    //Do something for Contributor
}

РЕДАКТИРОВАТЬ

Роли пользователей начинаются с прописных букв, но роли, возвращаемые из get_queried_object()->roles, начинаются со строчных букв. Вот почему я использовал роли как таковые в своем коде и использовал strtolower для преобразования ролей в нижний регистр

 1
Author: Pieter Goosen, 2020-06-15 08:21:38

Можно ли это сделать?

Конечно.

Внутри author.php получите идентификатор пользователя, на которого ссылается просмотренный профиль, используя get_queried_object_id() проверьте возможность и, наконец, условно отобразите контент на основе этого.

Я сказал "проверить возможности", а не "проверить роль", потому что проверять роли - это meh, это намного лучше и рекомендуется проверять возможности. Использовать user_can для сферы применения.

 0
Author: gmazzap, 2014-10-09 20:31:44