В WordPress / WooCommerce у меня есть интернет-магазин, в котором используются роли пользователей, и на основе этих ролей вы можете видеть разные страницы / продукты.
То, что я хочу сделать, это добавить способ, позволяющий временно просматривать некоторые роли пользователей, то же самое, что и другие роли пользователей.
Допустим, у меня есть 4 разные роли пользователя:
Могу ли я сделать (скажем, кнопку), что при нажатии будет отображаться содержимое с ограниченным доступом для «участника по умолчанию», чтобы просматривать его, как если бы оно было «Премиум членом»?
Желательно, чтобы я НЕ хотел постоянно менять роль пользователя, а затем менять ее обратно. Возможно ли это как-то?
Спасибо
Да, это возможно, если вы добавите 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, который будет установлен вашей «кнопкой». Таким образом, вам не нужно будет использовать настраиваемое поле.
Других решений пока нет …