ユーザーの役割とカテゴリに基づいてWooCommerceの表示価格を変更する[終了]


13

ユーザーの役割(卸売業者、ディーラーなど)とカテゴリに基づいて、異なる価格を表示したいと考えています。

動的な価格設定プラグインがあり、商品がカートに追加されるとこれらの割引が表示されますが、ページ自体には表示されません。

フィルターまたはアクションを使用してユーザーレベルを確認し、アイテムのカテゴリを確認してから価格を動的に変更する方法はありますか?

回答:


18

はい、woocommerce_get_priceフィルターフックを使用して、ユーザーロールに基づいて値をフィルターし、それに応じて価格を返すことができます。例:

add_filter('woocommerce_get_price', 'custom_price_WPA111772', 10, 2);
/**
 * custom_price_WPA111772 
 *
 * filter the price based on category and user role
 * @param  $price   
 * @param  $product 
 * @return 
 */
function custom_price_WPA111772($price, $product) {
    if (!is_user_logged_in()) return $price;

    //check if the product is in a category you want, let say shirts
    if( has_term( 'shirts', 'product_cat' ,$product->ID) ) {
        //check if the user has a role of dealer using a helper function, see bellow
        if (has_role_WPA111772('dealer')){
            //give user 10% of
            $price = $price * 0.9;
        }
    }
    return $price;
}

/**
 * has_role_WPA111772 
 *
 * function to check if a user has a specific role
 * 
 * @param  string  $role    role to check against 
 * @param  int  $user_id    user id
 * @return boolean
 */
function has_role_WPA111772($role = '',$user_id = null){
    if ( is_numeric( $user_id ) )
        $user = get_user_by( 'id',$user_id );
    else
        $user = wp_get_current_user();

    if ( empty( $user ) )
        return false;

    return in_array( $role, (array) $user->roles );
}

これを試してみました。functions.phpにこのコードを追加しました。動作しません。

1
この素晴らしい答えをありがとう。何らかの理由で、このフィルターを使用しても変動価格は変わりません。この問題に慣れていますか?
ロバート

シンプルな製品でのみ動作します
クレビスミホ

0

WooCommerceの顧客固有の価格設定を試すことができます。このプラグインを使用すると、登録ユーザーに異なる価格を追加できます。

現在、プラグインは初期段階にありますが、製品カテゴリに基づいた価格などの追加機能をサポートするためのアップデートがすぐにあります。


このプラグインは、製品のみを割引できます。価格を上げたい場合はどうしますか?
クレビスミホ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.