Ограничить создание страниц функциями роли пользователя. Переполнение стека

Можно ли создать функцию через functions.php, которая ограничивает пользователей от создания страниц в зависимости от их роли? Так, например, пользователи с ограниченной ролью могут создавать только 5 страниц.

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

Я знаю, что есть плагин под названием Bainternet Posts Creation Limits, но это вызывает некоторые проблемы.

Возможно ли что-то с функцией?

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

Хорошо, я попробовал приведенный ниже код, но не работает, и, честно говоря, мои навыки кодирования слишком плохие, чтобы что-то из этого сделать

У кого-нибудь еще есть идеи?

0

Решение

Вы можете попробовать что-то вроде этого:

Шаг 1: После создания пользователя: предоставьте пользователю возможность «publish_pages»

Шаг 2: Сохраните в user_meta, сколько страниц создал пользователь.

Шаг 3: Если у пользователя есть 5 или более страниц, удалите эту возможность у этого пользователя.

ШАГ 1 & 2 (не проверено):

add_action( 'user_register', 'user_registered', 10, 1 );

function user_registered( $user_id ) {

// ADD CAPABILITY
$user = new WP_User( $user_id );
if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'YOURROLEHERE', $user->roles ) ) {
$user->add_cap( 'publish_pages');
update_user_meta($user_id, 'numberofpages', 0);
}

}

ШАГ 3 (не проверено):

add_action('publish_page', 'user_published_page');

function user_published_page(){
// GET CURRENT USER
$user_id = get_current_user_id();
$user = new WP_User( $user_id );

// CHECK ROLE
if ( ! empty( $user->roles ) && is_array( $user->roles ) && in_array( 'YOURROLEHERE', $user->roles ) ) {
// GET NUMBER OF PAGES CREATED
$numberofpages = intval(get_user_meta($user_id, 'numberofpages', true));

if($numberofpages >= 5){
$user->remove_cap( 'publish_pages');
} else {
update_user_meta($user_id, 'numberofpages', $numberofpages + 1);
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]