2017-01-24 4 views
2

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

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

Позволяет сказать, у меня есть 4 различных ролей пользователей:

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

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

Желательно, чтобы я НЕ должен постоянно изменять роль пользователя, а затем менять его. Это возможно в некотором роде?

Благодаря

ответ

3

Да, это возможно, если добавить условие 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' роли пользователя в вашем состоянии и (&&) специального печенье, который будет установлен на вашу «кнопку». Таким образом вам не придется использовать настраиваемое поле.

+0

Моя первоначальная мысль/попытка была чем-то вроде того, что вы описали выше, но я вижу несколько проблем с ним. (1): Позволяет сказать, что его единственный администратор, я хочу видеть, как он ищет другие роли, я не хочу постоянно менять его роль :( (2): мне нужно нажать кнопку несколько раз, чтобы переключитесь туда и обратно. (3): Я вынужден использовать пользовательскую переменную - не то, чтобы с ними что-то не так, но, очевидно, я бы предпочел не :) – Mac

Смежные вопросы