Alterando o preço de exibição do WooCommerce com base na função e na categoria do usuário [fechado]

13

Estou procurando exibir um preço diferente com base na função do usuário (atacadista, revendedor, etc.) E com base na categoria.

Há um plug-in de precificação dinâmico que exibe esses descontos assim que um item é adicionado ao carrinho, mas não na própria página.

Existe uma maneira de usar um filtro ou ação para verificar o nível do usuário, verificar a categoria do item e alterar o preço dinamicamente?

Buda complicado
fonte

Respostas:

18

Sim, existe, você pode usar o woocommerce_get_pricegancho de filtro para filtrar o valor com base na função do usuário e retornar um preço de acordo, por exemplo:

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
fonte
Eu tentei isso. Adicionado este código em functions.php. Não funciona
1
Obrigado por esta ótima resposta. Por alguma razão, meus preços de variação não mudam usando esse filtro. Você está familiarizado com este problema?
22618 Robbert
Funciona apenas em produtos simples
Klevis Miho 01/10
0

Você pode experimentar o Preço Específico do Cliente para o WooCommerce . Com este plugin, você pode adicionar preços diferentes para usuários registrados.

Atualmente, o plug-in está em sua fase inicial, mas em breve haverá atualizações para oferecer suporte a recursos adicionais, como preço com base na categoria do produto.

WisdmLabs
fonte
este plugin pode apenas descontar um produto. E se você quiser aumentar o preço?
Klevis Miho