Como desativar o método de pagamento para uma categoria específica

Publicados: 2020-09-01

WooCommerce Desativar Método de Pagamento para Categoria Específica Você está executando uma loja WooCommerce e deseja saber como desativar o método de pagamento para uma categoria específica ou vários métodos de pagamento com base nas categorias de produtos presentes no carrinho? Se você está procurando uma solução focada em categorias de produtos, mas com algumas pequenas alterações também pode ser alterada para classes de envio, por exemplo, nos próprios produtos, este artigo o orientará sobre como conseguir isso.

Desativar método de pagamento para categoria específica

Um bom exemplo em que essa abordagem é útil é quando os proprietários de lojas WooCommerce têm uma categoria contendo apenas produtos de alto preço e desejam que os clientes paguem com transferência bancária em vez de usar cartão de crédito. Este é apenas um exemplo das muitas situações em que você pode precisar desabilitar uma forma de pagamento para uma categoria.

Se você não é experiente em tecnologia, pode optar por um plugin premium para fazer o trabalho para você. Um exemplo é o WooCommerce Conditional Payment Plugin, que ajuda você a criar condições nas quais seus métodos de pagamento serão habilitados ou desabilitados. Se você não é tão bom em usar código, esta será a melhor solução premium que você deve considerar.

Além disso, este plugin permite que você crie condições ilimitadas e use, por exemplo, totais do carrinho, país de cobrança, função do usuário e muito mais para definir qual gateway de pagamento mostra e qual não.

Plugin de pagamento condicional WooCommerce

No entanto, para este breve tutorial, mostrarei como desabilitar um método de pagamento para uma categoria específica usando trechos de código PHP.

Etapas para desativar o método de pagamento para uma categoria específica usando o trecho de código PHP

Aqui estão os passos simples que você precisa seguir:

  1. Faça login no seu site WordPress e acesse o Dashboard como usuário administrador.
  2. No menu Dashboard, clique em Appearance Menu > Theme Editor Menu . Ao abrir a página do Editor de Temas , procure o arquivo de funções do tema onde adicionaremos a função que desabilitará a forma de pagamento para uma categoria específica.
  3. Adicione o seguinte código ao arquivo php :
 /**
 * @snippet Desativar forma de pagamento para categoria específica
*/


add_filter( 'woocommerce_available_payment_gateways', 'njengah_unset_gateway_by_category' );


function njengah_unset_gateway_by_category( $available_gateways) {

    if ( is_admin() ) return $available_gateways;

    if ( ! is_checkout() ) return $available_gateways;

    $desativado = falso;

    $category_ids = array(8, 37);

    foreach ( WC()->cart->get_cart_contents() as $chave => $valores) {

        $terms = get_the_terms( $values['product_id'], 'product_cat');   

        foreach ( $terms as $term ) {       

            if (in_array( $term->term_id, $category_ids)) {

                $desativado = verdadeiro;

                pausa;

            }

        }

    }

    if ( $unset == true ) unset( $available_gateways['cheque'] );

    return $available_gateways;

}
  1. Este será o resultado desabilitar uma forma de pagamento para uma categoria específica

Lembre-se de adicionar o ID de categoria correto que está em sua loja WooCommerce para que este código funcione.

Se você não gosta de usar o ID da categoria, também pode usar o slug de categoria em sua loja WooCommerce. Você pode optar por usá-los, pois são mais fáceis de entender para referência futura.

Etapas para desativar o método de pagamento para uma categoria específica usando slugs de categoria

  1. Faça login no seu site WordPress e acesse o Dashboard como usuário administrador.
  2. No menu Dashboard, clique em Appearance Menu > Theme Editor Menu . Ao abrir a página do Editor de Temas , procure o arquivo de funções do tema onde adicionaremos a função que desabilitará a forma de pagamento para uma categoria específica.
  3. Adicione o seguinte código ao arquivo php :
 /**

 * @snippet Desativa o gateway de pagamento com base na categoria.

*/

function njengah_disable_payment_gateway_category($gateways) {

// Categorias que irão desabilitar o gateway de pagamento

$category_slugs = array( 'acessórios', 'outra-categoria' );

$category_ids = get_terms( array( 'taxonomy' => 'product_cat', 'slug' => $category_slugs, 'fields' => 'ids' ) );


// Verifica cada item do carrinho para determinada categoria

foreach ( WC()->cart->get_cart() as $item) {

$produto = $item['dados'];

if ( $product && array_intersect( $category_ids, $product->get_category_ids()) ) {

unset( $gateways['cod']); // Desativa o gateway de pagamento 'cod' quando o produto possui uma das categorias

pausa;

}

}

retornar $portais;

}

add_filter( 'woocommerce_available_payment_gateways', 'njengah_disable_payment_gateway_category' );
  1. Este será o resultado desabilitar forma de pagamento para categoria específica

Lembre-se de adicionar o slug de categoria correto e você precisa definir o gateway de pagamento que deseja desativar. Para o meu exemplo, usei 'cod' para representar dinheiro na entrega.

É importante observar que o identificador do gateway de pagamento também precisa ser alterado para o que você deseja desativar quando a categoria fornecida estiver presente no carrinho.

  • Transferência bancária (bac)
  • Cheque (cheque)
  • Dinheiro na entrega (bacalhau)
  • PayPal (PayPal)

No entanto, se você não estiver usando um dos gateways de pagamento padrão, não se preocupe, pois ainda há uma maneira fácil de descobrir o ID do gateway de pagamento. Você pode fazer isso acessando a página de configurações do gateway de pagamento e encontrará o ID lá.

Por exemplo, para a opção Dinheiro na entrega na página de configurações, este será o URL: wp-admin/admin.php?page=wc-settings&tab=checkout&section=cod

Conclusão

Neste post, você aprendeu como desabilitar o Método de Pagamento para Categoria Específica usando dois métodos. Você pode defini-los usando IDs de categoria de produto ou slugs de categoria para facilitar a referência futura. Lembre-se de usar o ID da categoria ou slug que está na sua loja WooCommerce para adicionar essa funcionalidade.

Artigos semelhantes