Я создал пользовательскую роль под названием restaurant_owner. Я хочу иметь раздел с правами администратора, в котором вошедший в систему администратор может добавлять или удалять возможности пользовательских типов записей для этой роли пользователя.
Я создал свою роль пользователя здесь:
//Create Restaurant Owner
add_action('init', 'restaurant_owner_user_role');
function restaurant_owner_user_role() {
add_role('restaurant_owner', 'Restaurant Owner');
}
Затем я использовал ACF для создания раздела параметров, в этом разделе я добавил несколько переключателей. Если возможность отмечена как «да», я хочу, чтобы возможности были добавлены пользователю (это работает), когда администратор нажимает «Нет», я хочу, чтобы возможности были удалены (это не работает).
//Adds Restaurant Owner Custom Capabilities
$options = get_fields($post_id);
$january = get_field_object('january_offer', 'option', $options);
function add_rest_caps() {
$restaurant = get_role( 'restaurant_owner' );
$restaurant->add_cap('read');
$restaurant->add_cap( 'edit_restaurant' );
$restaurant->add_cap( 'delete_restaurant' );
$restaurant->remove_cap( 'read_restaurant' );
$restaurant->add_cap( 'publish_restaurants' );
$restaurant->add_cap( 'edit_restaurants' );
$restaurant->remove_cap( 'edit_others_restaurants' );
$restaurant->remove_cap( 'delete_restaurants' );
$restaurant->remove_cap( 'delete_others_restaurants' );
$restaurant->remove_cap( 'read_private_restaurants' );
$restaurant->remove_cap( 'manage_categories' );
if ($january = 'yes') {
$restaurant->add_cap( 'edit_january_offer' );
$restaurant->add_cap( 'delete_january_offer' );
$restaurant->add_cap( 'edit_january_offers' );
} elseif ($january = 'no') {
//this bit doesn't work
$restaurant->remove_cap( 'edit_january_offer' );
$restaurant->remove_cap( 'delete_january_offer' );
$restaurant->remove_cap( 'edit_january_offers' );
}
}
add_action( 'init', 'add_rest_caps');
Что я делаю не так? Я не могу понять, почему это не убирает возможности.
Вот пример области администрирования, где они выбирают да или нет для нескольких предложений. Надеюсь, это поможет объяснить это.