Ändern des WooCommerce-Anzeigepreises basierend auf Benutzerrolle und -kategorie [geschlossen]

13

Ich möchte einen anderen Preis basierend auf einer Benutzerrolle (Großhändler, Händler usw.) UND basierend auf der Kategorie anzeigen.

Es gibt ein Plugin für dynamische Preise, das diese Rabatte anzeigt, sobald ein Artikel zum Warenkorb hinzugefügt wird, jedoch nicht auf der Seite.

Gibt es eine Möglichkeit, mithilfe eines Filters oder einer Aktion nach der Benutzerebene zu suchen, die Kategorie des Artikels zu überprüfen und dann den Preis dynamisch zu ändern?

Heikler Buddha
quelle

Antworten:

18

Ja, Sie können den woocommerce_get_priceFilter-Hook verwenden, um den Wert basierend auf der Benutzerrolle zu filtern und einen entsprechenden Preis zurückzugeben. Beispiel:

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 );
}
Bainternet
quelle
Ich habe es versucht. Fügte diesen Code in functions.php hinzu. Funktioniert nicht
1
Danke für diese tolle Antwort. Aus irgendeinem Grund ändern sich meine Variationspreise mit diesem Filter nicht. Kennen Sie dieses Problem?
Robbert
Funktioniert nur mit Simple-Produkten
Klevis Miho
0

Sie können die kundenspezifischen Preise für WooCommerce ausprobieren . Mit diesem Plugin können Sie verschiedene Preise für registrierte Benutzer hinzufügen.

Derzeit befindet sich das Plugin in der Anfangsphase, es wird jedoch bald Updates geben, um zusätzliche Funktionen wie den Preis je nach Produktkategorie zu unterstützen.

WisdmLabs
quelle
Dieses Plugin kann nur ein Produkt rabattieren. Was ist, wenn Sie den Preis erhöhen möchten?
Klevis Miho