2017-01-24 4 views
2

WordPress/WooCommerceでは、ユーザーロールを使用するWebショップがあり、それらのロールに基づいてさまざまなページ/製品が表示されます。特定のユーザーのロールに一部の制限付きコンテンツを見せることを許可する

私が探しているのは、一部のユーザーロールが他のユーザーロールと同じものを一時的に参照できるようにする方法です。

は、私は4つの異なるユーザー役割持って、言うことができます:

  1. 管理
  2. プレミアムメンバーを
  3. スタンダードメンバー
  4. デフォルトメンバー

それは私が作ることは可能です(ボタンを押すと、プレミアムメンバーであるかのように、「Default Member」に制限付きのコンテンツが表示されます。

好ましくは、ユーザーの役割を永久に変更しないようにしたいと思います。これは何らかの形で可能ですか?

おかげ

答えて

3

ユーザーの役割を既存のあなたのためにあなたのページのテンプレートにOR条件を追加する場合は、[はい、それは、可能ですが(または表示)を表示条件。この条件は、ユーザーメタデータに設定されたカスタムフィールドに基づいています。

その「ボタン」をクリックすると、ユーザーカスタムフィールドの値が更新され、「プレミアムコンテンツ」(たとえば、)が表示されます。この目的のために、get_user_meta()update_user_meta()ワードプレス関数を使用することができます。

あなたのPHPファイルやテンプレートの冒頭に2つの変数のことを最初に定義:

// 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 
    } 
} 

...


更新(あなたのコメントに基づいて)

また、あなたのコメント、あなたは'administrator'ユーザーあなたの条件での役割と&&あなたの「ボタン」で設定される特別なクッキーをターゲットにすることができます。この方法では、カスタムフィールドを使用する必要はありません。

+0

私の最初の思考/試みは、あなたが上で説明した行に沿って何かだったが、私はそれに複数の問題があると思う。 (1):自分の役割を永久に変更したくないという管理者だけが他の役割の仕組みを見たいと思っています:( (2):ボタンを何度も押してください (3):私はカスタム変数を使用するように強制しました - それが何か間違っているわけではありませんが、明らかに私は好きではありません:) – Mac

関連する問題