Можно ли создать функцию через functions.php, которая ограничивает пользователей от создания страниц в зависимости от их роли? Так, например, пользователи с ограниченной ролью могут создавать только 5 страниц.
Когда они достигнут этой суммы, кнопка «Создать новую страницу» должна исчезнуть, или они получат сообщение о том, что достигли лимита, и должны связаться с администратором.
Я знаю, что есть плагин под названием Bainternet Posts Creation Limits, но это вызывает некоторые проблемы.
Возможно ли что-то с функцией?
РЕДАКТИРОВАТЬ:
Хорошо, я попробовал приведенный ниже код, но не работает, и, честно говоря, мои навыки кодирования слишком плохие, чтобы что-то из этого сделать
У кого-нибудь еще есть идеи?
Вы можете попробовать что-то вроде этого:
Шаг 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);
}
}
}
Других решений пока нет …