Как вывести данные только для нескольких ролей?

В WordPress есть несколько способов вывода данных только для определенных ролей пользователей. В этом ответе я расскажу о двух наиболее распространенных методах.

1. Использование условных проверок в шаблоне:
Этот метод заключается в проверке текущей роли пользователя и выводе соответствующих данных в шаблоне. Например, вы можете использовать функцию current_user_can() для проверки прав доступа пользователя и затем включить или исключить вывод данных на основе результата проверки. Вот пример использования этого метода:

<?php
if ( current_user_can( 'editor' ) || current_user_can( 'author' ) ) {
    // Выводите данные для пользователей с ролью 'editor' или 'author' здесь
}
?>

В этом примере мы проверяем, имеет ли текущий пользователь роль 'editor' или 'author', и если да, то выводим соответствующие данные.

2. Использование хука init и функции remove_role():
Если вам нужно полностью исключить определенную роль из доступа к определенным данным, вы можете использовать хук init и функцию remove_role(). Вот пример:

<?php
function exclude_role_from_data() {
    $role = get_role( 'subscriber' ); // Замените 'subscriber' на нужную вам роль
    if ( $role ) {
        $role->remove_cap( 'read_private_posts' ); // Замените 'read_private_posts' на нужную вам возможность
    }
}
add_action( 'init', 'exclude_role_from_data' );
?>

В этом примере мы используем функцию get_role() для получения объекта роли 'subscriber', а затем используем метод remove_cap() для удаления возможности 'read_private_posts'. Это означает, что пользователи с ролью 'subscriber' не смогут читать приватные статьи.

Оба этих метода могут быть полезны для вывода данных только для определенных ролей пользователей в WordPress. Выберите тот, который наиболее подходит для ваших конкретных потребностей.