Временное разрешение определенной роли пользователей просматривать ограниченный контент

В WordPress / WooCommerce у меня есть интернет-магазин, в котором используются роли пользователей, и на основе этих ролей вы можете видеть разные страницы / продукты.

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

Допустим, у меня есть 4 разные роли пользователя:

  1. Администратор
  2. Премиум-участник
  3. Стандартный член
  4. Член по умолчанию

Могу ли я сделать (скажем, кнопку), что при нажатии будет отображаться содержимое с ограниченным доступом для «участника по умолчанию», чтобы просматривать его, как если бы оно было «Премиум членом»?

Желательно, чтобы я НЕ хотел постоянно менять роль пользователя, а затем менять ее обратно. Возможно ли это как-то?

Спасибо

2

Решение

Да, это возможно, если вы добавите OR условие в шаблоне вашей страницы для просмотра ваших существующих ролей пользователей (или дисплей) условия. Это условие будет основано на настраиваемом поле, заданном в метаданных пользователя.

Поэтому, когда вы нажмете на эту «кнопку», она обновит значение пользовательского пользовательского поля и позволит отобразить «премиум-контент». (например). Для этого вы можете использовать get_user_meta() а также update_user_meta() Функции WordPress.

Сначала вы определяете две переменные в начале вашего 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
}

Теперь, когда вы нажимаете на «кнопку», он обновляет значение $ 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
}
}

Это должно работать …


Обновить (на основании вашего комментария)

В качестве альтернативы для администратора, как в вашем комментарии, вы можете настроить таргетинг 'administrator' роль пользователя в вашем состоянии И (&&) специальный файл cookie, который будет установлен вашей «кнопкой». Таким образом, вам не нужно будет использовать настраиваемое поле.

3

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

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

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