Да, это возможно, если добавить условие OR
в шаблоне страницы для твоего существующих пользовательских ролей просмотра (или дисплей) условия. Это условие будет основано на настраиваемом поле, заданном в метаданных пользователя.
Поэтому, когда вы нажмете на эту кнопку, она обновит значение пользовательского поля и позволит отобразить «премиальный контент» (например). Для этого вы можете использовать get_user_meta()
и update_user_meta()
Wordpress Functions.
Вы определяете первое, что 2 переменные в начале вашего файла PHP или шаблона:
// Getting the user iD
$user_id = get_current_user_id();
// Looking if our user custom field exist and has a value
$custom_value = get_user_meta($user_id, '_custom_user_meta', true);
Тогда ваше состояние будет немного как:
if($user_role == 'premium' && $custom_value){
// Displays the premium content
}
Теперь при нажатии на ваш «button», он обновит значение $ custom_value до true, позволяя этому пользователю увидеть этот премиальный контент при отправке формы (или с ajax).
Таким образом, вы должны поместить этот код сразу после 2-х переменных выше:
if('yes' == $_post['button_id']){
// $custom_value and $user_id are already defined normally (see above)
if($custom_value){
update_user_meta($user_id, '_custom_user_meta', 0); // updated to false
} else {
update_user_meta($user_id, '_custom_user_meta', 1); // updated to true
}
}
Это должно работать ...
Update(основано на ваш комментарий)
В качестве альтернативы для администратора, как в Ваш комментарий, Вы можете нацелить 'administrator'
роли пользователя в вашем состоянии и (&&
) специального печенье, который будет установлен на вашу «кнопку». Таким образом вам не придется использовать настраиваемое поле.
Моя первоначальная мысль/попытка была чем-то вроде того, что вы описали выше, но я вижу несколько проблем с ним. (1): Позволяет сказать, что его единственный администратор, я хочу видеть, как он ищет другие роли, я не хочу постоянно менять его роль :( (2): мне нужно нажать кнопку несколько раз, чтобы переключитесь туда и обратно. (3): Я вынужден использовать пользовательскую переменную - не то, чтобы с ними что-то не так, но, очевидно, я бы предпочел не :) – Mac