Java, UX, HTML, CSS, WEB-design

Использование ролей пользователей в WordPress

[ad_1]

  • Даниэль Патаки

  • 0 Комментарии

Использование ролей пользователей в WordPress

  • 10 минут чтения

  • WordPress, Админ, Техники (WP)

Краткое резюме ↬

Роли уже довольно давно являются неотъемлемой частью WordPress — многие функции, связанные с управлением ими, существуют с версии 2.0.0. Несмотря на такую ​​долговечность, они редко используются, что является позором, поскольку они позволяют легко настраивать пользовательские типы пользователей (а также имеют возможность микроуправления ими). В этой статье вы узнаете все, что вам нужно, чтобы использовать роли пользователей в WordPress и максимально использовать эту невероятную встроенную функциональность.

Роли уже довольно давно являются неотъемлемой частью WordPress — многие функции, связанные с управлением ими, существуют с версии 2.0.0. Несмотря на такую ​​долговечность, они редко используются, что является позором, поскольку они позволяют легко настраивать пользовательские типы пользователей (а также имеют возможность микроуправления ими). В этой статье вы узнаете все, что вам нужно, чтобы использовать роли пользователей в WordPress и максимально использовать эту невероятную встроенную функциональность.


Большой вид.

Терминология

Основные термины, которые нужно знать, это «роль» и «возможность». Возможности являются ядром системы, они представляют вещи, которые вы можете сделать. Примером способности является switch_themes. Пользователь, у которого есть эта возможность, может изменить внешний вид веб-сайта, используя раздел «Внешний вид» в панели администратора. Те, у кого нет такой возможности, не смогут этого сделать.

Дальнейшее чтение на SmashingMag:

  • Управляйте событиями как профессионал с WordPress
  • Написание эффективной документации для конечных пользователей WordPress
  • Случайное перенаправление в WordPress
  • Методы кэширования своими руками с помощью WordPress

Еще после прыжка! Продолжить чтение ниже ↓

Роли являются просто именованным набором возможностей. Представьте, что у вас есть такие возможности, как edit_post, add_user и так далее. Вместо того, чтобы перечислять все 50 из них для каждого пользователя, которого вы хотели бы сделать администратором, просто назначьте каждому пользователю роль «администратора», а затем назначьте этой роли все возможности.

Настройка по умолчанию

По умолчанию WordPress имеет шесть ролей и около 57 возможностей. Каждая роль имеет различное сочетание возможностей, которые наделяют пользователя соответствующими правами и привилегиями.

Например, участник может редактировать и удалять свои собственные сообщения, но не может контролировать, когда эти сообщения публикуются (и не может удалять эти сообщения после их публикации). Это потому, что они имеют edit_posts и delete_posts способности, но они нет есть publish_post и delete_published_post возможности.

Настройки по умолчанию, предлагаемые WordPress, очень хорошо продуманы и не должны изменяться, а только добавляться. Если его изменить, позже вы можете столкнуться с серьезными проблемами — например, участник может удалить сообщения с вашего веб-сайта или администратор не сможет изменить тему.

Когда нужны новые роли и возможности

Новые роли обычно идут рука об руку с новыми возможностями. Обычно мы сначала создаем набор новых возможностей, которыми владеет администратор (а также новую роль). Давайте посмотрим на пример.

Если у вас большой веб-сайт, скорее всего, у вас есть маркетинговая команда. Этой команде не обязательно иметь возможность редактировать и публиковать сообщения, но им нужен доступ к рекламной статистике, популярным темам поиска и т. д. Возможно, было бы также полезно разрешить им управлять категориями и комментариями для целей SEO и удовлетворенности клиентов соответственно.

Наша первая задача — посмотреть рекламную статистику и популярные поисковые запросы. Это не то, что WordPress предлагает по умолчанию, поэтому давайте предположим, что он был создан как плагин. Давайте создадим возможность под названием view_stats. Это будет передано маркетологам и, конечно же, администратору. Другим пользователям, таким как редакторы и авторы, не нужно видеть статистику (которая во многих случаях является конфиденциальной информацией), поэтому они не получат эту возможность.

Наша вторая задача — решить, какие еще способности нужны нашим маркетологам. Исходя из наших предположений выше, им потребуется read, manage_links, manage_categories и moderate_comments возможности.

Наконец, мы использовали некоторые хитрости кодирования, чтобы создать новую роль с именем «Маркетинг» и назначить ей вышеупомянутые возможности. Как только это будет сделано, мы сможем назначить роль «Маркетинг» любому пользователю на страницах «Добавить пользователя» и «Редактировать профиль».

Основные функции WordPress

Для эффективного управления ролями и возможностями вам понадобятся пять очень простых функций:

  • add_role() — Позволяет добавить пользовательскую роль
  • remove_role() — Позволяет удалить пользовательскую роль
  • add_cap() — Позволяет добавить пользовательскую возможность к роли.
  • remove_cap() — Позволяет удалить пользовательскую возможность из роли.
  • get_role() — Получает информацию о роли, а также связанные возможности

Если вы хотите ознакомиться с документацией по этим функциям, вы можете заглянуть в раздел «Роли и возможности» Кодекса.

Внедрение новых ролей и возможностей

Для полной реализации ролей и возможностей требуется больше, чем просто пять функций, которые я упомянул. Нам также понадобятся функции для проверки возможностей, нам понадобятся функции, доступные только для определенных ролей, и так далее.

Добавление ролей и возможностей


$marketing = add_role( 'marketing', 'Marketing', array(
    'read' => true,
    'manage_links', 
    'manage_categories', 
    'moderate_comments',
    'view-stats'
));

$role = get_role( 'administrator' );
$role->add_cap( 'view-stats' );  

Функция выше добавит нашу новую роль «Маркетинг». Он добавляет четыре возможности, которые уже включены в WordPress, и пятую, которая является настраиваемой возможностью. Как видите, для добавления пользовательских заглавных букв не требуется никакого специального кода — просто включите их в массив при добавлении роли. Как только мы добавим новую роль, мы обязательно добавим нашу новую возможность и в роль администратора.

Обратите внимание, что add_role() функция возвращает WP_Role возражать против успеха или NULL если роль уже существует.

Поскольку приведенный выше код будет использоваться в плагине, лучший способ использовать его — использовать хуки и добавлять возможности администратору только при первом создании роли.


add_action(‘admin_init’, ‘add_custom_role’);

function add_custom_role() { $marketing = add_role(‘маркетинг’, ‘Маркетинг’, array(‘read’ => true, ‘manage_links’, ‘manage_categories’, ‘moderate_comments’, ‘просмотр-статистики’));

if( null !== $marketing ) { $role = get_role(‘администратор’); $role->add_cap(‘просмотр статистики’); } }

Проверка возможностей и ролей

Как только у нас будет наша система, мы можем проверить возможности и роли. Это позволяет нам убедиться, что только пользователи с соответствующими возможностями могут выполнять определенные действия.


add_action('admin_menu', 'register_stats_Page');

function register_stats_Page() {
    add_menu_page( 'Marketing Info', 'Marketing Info', 'view_stats', 'marketing-info', 'show_marketing_info' );
}

function show_marketing_info(){
   if( ! current_user_can( 'view-stats' ) ) {
      die( 'You are not allowed to view this page' );
   }
   echo "
This is the marketing stats page
"; 
}  

Приведенный выше код добавит меню верхнего уровня в область администрирования нашей страницы маркетинговой статистики. То add_menu_page() Функция позволяет указать возможность (третий аргумент), которая определяет, будет ли отображаться меню.

Обратите внимание, что хотя add_menu_page() сама функция принимает возможность в качестве аргумента, нам все еще нужно проверить ее в функции, которая отображает содержимое страницы.

Это прекрасно подводит нас к следующим двум функциям: current_user_can() и user_can().

Если вы хотите проверить, есть ли у вошедшего в систему пользователя определенная возможность, просто используйте следующий формат:


if( current_user_can( 'any_capability' ) ) {
    // The user has the capability
}
else {
    // The user does not have the capability
}  

Если вы хотите проверить, есть ли у произвольного пользователя определенная возможность, используйте user_can() функция:


if( user_can( 45, 'any_capability' ) ) {
    // The user with the ID of 45 has the capability
}
else {
    // The user with the ID of 45 does not have the capability
}  

В дополнение к возможностям обе функции могут проверять роли также:


if( current_user_can( 'marketing' ) ) {
    // The current user is a marketing person
}
else {
    // The current user is not a marketing person
}  

Создание типов пользователей

Хотя это и не официальный термин, я называю разные роли «типами пользователей», когда они требуют множества различных изменений во внешнем интерфейсе. Например, вы создаете рынок тем. Кроме администратора, который все курирует (и авторов, которые будут писать в блоге компании), у вас есть покупатели и продавцы. Оба они являются зарегистрированными пользователями вашего веб-сайта, но требуют несколько разных интерфейсов.

Страница профиля покупателя, скорее всего, покажет количество вещей, которые он купил, как часто он покупает вещи, а при входе в систему он увидит список загрузок.

Профиль продавца — это портфолио его работ, его самых популярных товаров и так далее. При входе в систему он, вероятно, должен увидеть статистику продаж.

Выяснение ролей и разрешений

Чтобы упростить задачу, пользователи либо покупают, либо продают, но не могут делать и то, и другое. Давайте создадим две роли с набором возможностей (внезапно…):


add_action( 'admin_init', 'add_custom_roles' );

function add_custom_roles() {
    $seller = add_role( 'seller', 'Seller', array(
        'read' => true,
        'delete_posts' => true,
        'edit_posts' => true,
        'delete_published_posts' => true,
        'publish_posts' => true,
        'upload_files' => true,
        'edit_published_posts' => true,
        'view_sales' => true,
        'moderate_comments' => true
    ));

    $role = get_role( 'administrator' );

    if( null !== $seller ) {
        $role->add_cap( 'view_sales' );
        $role->add_cap( 'view_others_sales' );
   }

    $buyer = add_role( 'buyer', 'Buyer', array(
        'read' => true,
        'add_payment' => true,
        'download_resources' => true
    ));

    if( null !== $buyer ) {
        $role->add_cap( 'add_payment' );
        $role->add_cap( 'add_others_payment' );
        $role->add_cap( 'download_resources' );
        $role->add_cap( 'download_others_resources' );
   }

}  

Идея здесь в том, что продавцы похожи на авторов, которые будут хранить продаваемые товары в виде постов. Поэтому они получают возможности автора. Кроме того, они также могут просматривать статистику продаж своих товаров.

Помимо просмотра товаров, покупатели также могут добавлять платежи и загружать файлы, связанные с покупаемыми ими товарами.

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

Реализация внешнего интерфейса

С этого момента нужно использовать наши функции проверки ролей и возможностей, чтобы определить, кто что видит. Давайте рассмотрим пару примеров:

Список пользователей

Если мы перечислим всех пользователей на веб-сайте, мы сможем показать товары, купленные для покупателей, и проданные товары для продавцов. Вот как:


<!-- 
  User Data comes from a WordPress user object stored in the $user variable 
--> 

<div class="user">
  <div class="row">
    <div class="threecol">
      <?php echo get_avatar( $user->ID, 120 ) ?>
    </div>
    <div class="sixcol">
      <h1><?php echo $user->display_name ?></h1>
      <?php echo $user->description ?>
    </div>
    <div class="threecol last">
      <?php if( user_can( $user->ID, 'buyer' ) ) : ?>  
        <div class="counter">
          <span class="number"><?php get_purchases_count( $user->ID ) ?></span>
          <span class="text">purchases</span>
        </div>
      <?php else ?>
        <div class="counter">
          <span class="number"><?php get_sales_count( $user->ID ) ?></span>
          <span class="text">sales</span>
        </div>      
      <?php endif ?>
    </div>
  </div>
</div>  

По большей части это старый добрый HTML, но важно понять, как создается счетчик. Обратите внимание, что get_purchases_count() и get_sales_count() функции являются фиктивными (конечно, они не являются частью WordPress).

Конечно, в реальном примере нам нужно убедиться, что перечислены только покупатели и продавцы, и нам может потребоваться полностью создать отдельный шаблон для них (если различий достаточно много).


foreach( $users as $user_id ) {
    $user = get_userdata( $user_id );
    if( user_can( $user->ID, 'buyer' ) ) {
        get_template_part( 'userlist', 'buyer' );
    }
    else {
        get_template_part( 'userlist', 'seller' );
    }
}  

При циклическом просмотре наших пользователей выше либо userlist-buyer.php или userlist-seller.php будет использоваться в зависимости от роли пользователя.

Вывод

Роли и возможности пользователей — чрезвычайно мощные инструменты в WordPress. Всякий раз, когда вы создаете плагин, который требует реализации специальных пользовательских функций, вы должны рассмотреть возможность их использования.

Помимо облегчения вашей жизни (и большей управляемости), это облегчит отслеживание процессов на ваших веб-сайтах и ​​поможет отследить любые проблемы.

(jvb) (il) (jc) (js)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Использование ролей пользователей в WordPress

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Использование ролей пользователей в WordPress

Название: Использование ролей пользователей в WordPress . Краткое описание: [ad_1] ⭐ Даниэль . Дата публикации: 16.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»