Зміна відображуваної ціни 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 );
}

Я спробував це. Додано цей код у function.php. Не працює.

1
Дякую за цю чудову відповідь. Чомусь мої зміни ціни не змінюються за допомогою цього фільтра. Ви знайомі з цією проблемою?
Роберт

Працює лише над простими продуктами
Klevis Miho

0

Ви можете спробувати цінові ціни для WooCommerce . За допомогою цього плагіна ви можете додавати різні ціни для зареєстрованих користувачів.

Наразі плагін знаходиться на початковій фазі, але незабаром з’являться оновлення для підтримки додаткових функцій, таких як ціна на основі категорії товару.


цей плагін може знижувати лише товар. Що робити, якщо ви хочете підняти ціну?
Клевіс Міхо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.