2017-03-07 8 views
0

クライアントのためのwoocommerceウェブサイトを完成させました。クライアントの要件に応じて、私は問題を抱えています。私のクライアントは、代理店が注文を検索する必要があるだけだが、注文のいずれかを編集することはできないか、他のオプションは表示しないでください。代理人は、電話番号、メールアドレス、請求先住所などの注文詳細をすべて表示する必要がありますが、何も編集できないはずです。読み取り専用アクセスwoocommerce

私はいくつかのユーザーロールエディタを試したことがありません。 注:すべての注文はゲスト注文のみです!

これを達成する方法があれば教えてください。

+0

は、カスタムの役割を作成しましたか?あなたは 'read_shop_order'を許可するが、' edit_shop_order'を許可しないロールを定義することはおそらく可能です。 [このインストール機能](https://github.com/woocommerce/woocommerce/blob/70d46fe008fd722561855a76b6a605188569d231/includes/class-wc-install.php#L716)を参照してください。 – helgatheviking

+0

これを試しますが、これ以上の提案は大歓迎です! –

+0

これはWooCommerce固有の役割機能を示すWooCommerceソースコードへの単なるリンクです。おそらく 'shop_manager'ロールを複製し、編集機能を削除することができます。 – helgatheviking

答えて

0

あなたのテーマのfunctions.phpでこれを試してみてください

//mydomain.com/my-account/view-order/xxxx - ここでは、任意の順序番号

function my_customer_has_capability($allcaps, $caps, $args) { 

    if (isset($caps[0])) { 
     switch ($caps[0]) { 
      case 'view_order' : 
       $user_id = $args[1]; 
       $order = wc_get_order($args[2]); 

       if ($order && $user_id == $order->user_id || my_get_current_user_role() == 'editor') { 
        $allcaps['view_order'] = true; 
       } 
      break; 
     } 
    } 
    return $allcaps; 
} 
add_filter('user_has_cap', 'my_customer_has_capability', 10, 3); 

function my_get_current_user_role() { 
    $current_user = wp_get_current_user(); 
    if (!($current_user instanceof WP_User)) 
     return; 

    if(empty($current_user->roles[0])) 
     return false; 

    $role = ($current_user->roles[0]); 
    return (string)$role; 
} 
+0

私はその動作していない申し訳ありません: あなたがしたい場合は、ここでそれを見ることができます。 404が見つかりませんでした。 –

+0

実際に私の主な関心事は、代理人が電話番号を含む請求の詳細を見ることができる必要がありますが、それらにアクセスすることはできないはずです。私はwoocommerce残りのAPIを試みたが、すべての注文がゲストの注文であるので、それは私のために働いていないようだ。 –

関連する問題