R

Habilitar e Desabilitar Meios de Pagamento por Tipo de Usuário no WooCommerce

Woocommerce é uma plataforma de e-commerce tem grande flexibilidade para definição de regras, estratégias e um número enorme de plugins que maximizam as suas funcionalidades ou agregam novas ao projeto.
Me deparei em um projeto de e-commerce para a rede franquias de escolas de futebol do Ronaldo, a Ronaldo Academy, com uma questão bem singular para woocommerce.
Limitar meios de pagamento por nível de usuário.

Bom, existem algumas formas de fazer isso com plugins, mas apenas uma função que encontrei no CanalWP me resolveu o “problema” de forma simples e prática.

Desabilitar

Digamos que sua loja WooCommerce não permita que clientes (customers) possam utilizar o tipo de pagamento Pagamento na entrega. Essa forma de pagamento, possui o código cod. Sendo assim, vamos acessar o arquivo functions.php e adicionar as seguintes instruções em código PHP:

 

function cwp_cash_delivery_disable_customer( $available_gateways ) {
global $woocommerce;

if ( isset( $available_gateways[‘cod’] ) && current_user_can(‘customer’) ) {
unset( $available_gateways[‘cod’] );
}

return $available_gateways;
}
add_filter( ‘woocommerce_available_payment_gateways’, ‘cwp_cash_delivery_disable_customer’ );

 

A primeira coisa que fazemos é verificar se o tipo de pagamento existe – informando o código, e depois se o usuário logado é do tipo cliente (customer). Se a verificação for verdadeira, desabilitamos a forma de pagamento utilizando o unset.

Para desabilitar mais de uma forma de pagamento, basta duplicar a linha com a instrução unset e trocar o código/ID do outro tipo de pagamento.

 

Habilitar

Talvez você não queira trabalhar com a regra de ocultar ou desabilitar uma forma de pagamento, mas sim de habilitar ou permitir que apenas um tipo de usuário possa utilizá-la. Simples, a mudança no nosso código será mínima.

 

Por exemplo, você quer que apenas gerentes da loja (shop manager) utilizem a opção de pagar com PayPal cujo código/ID é paypal. Veja como o bloco de código deve ficar:

 

function cwp_cash_delivery_enable_shopmanager( $available_gateways ) {
global $woocommerce;

if ( isset( $available_gateways[‘paypal’] ) && !current_user_can(‘shop_manager’) ) {
unset( $available_gateways[‘paypal’] );
}

return $available_gateways;
}
add_filter( ‘woocommerce_available_payment_gateways’, ‘cwp_cash_delivery_enable_shopmanager’ );

 

Aqui nós verificamos se o tipo de usuário é diferente de gerente da loja (shop manager), se for diferente a opção é desabilitada imediatamente. Dessa forma você tem a garantia que nenhum outro tipo de usuário – pois você pode ter vários tipos e níveis em sua loja -, poderá utilizar determinado meio de pagamento.

 

Share

Leave a comment