Woocommerce ocultar pasarela de pago para roles de usuario

2 minutos de lectura

Hola chicos, tengo un método de pago contra reembolso en mi sitio web de wordpress/woocomerce que quiero ocultar del rol de usuario del cliente y de los usuarios que no han iniciado sesión.

He estado buscando arriba y abajo y lo único que encontré cerca fue este fragmento de código.

function paypal_disable_manager( $available_gateways ) 

{global $woocommerce;

if ( isset( $available_gateways['paypal'] ) && current_user_can('customer') ) {

unset( $available_gateways['paypal'] );

}

return $available_gateways;

}

add_filter( 'woocommerce_available_payment_gateways','paypal_disable_manager' );

¿Alguien podría ayudarme a modificar este código para que funcione para mi uso? ¡Gracias de antemano!

  • Te recomendamos que elimines esta pregunta aquí, vuelve a preguntarla en http://wordpress.stackexchange.com/ Mucha gente allí… Busque allí también… es posible que otras personas hayan estado aquí antes.

    – zipzit

    11 de junio de 2015 a las 1:35


avatar de usuario
Dominio

Mencione el código que se probó y probó para usted. Funciona bien. Déjame saber si lo mismo funciona para ti también.

function wdm_disable_cod( $available_gateways ) {

    //check whether the avaiable payment gateways have Cash on delivery and user is not logged in or he is a user with role customer
    if ( isset($available_gateways['cod']) && (current_user_can('customer') || ! is_user_logged_in()) ) {

        //remove the cash on delivery payment gateway from the available gateways.

         unset($available_gateways['cod']);
     }
     return $available_gateways;
}

add_filter('woocommerce_available_payment_gateways', 'wdm_disable_cod', 99, 1);

  • Esto funcionó perfecto mi amigo! Gracias y es muy apreciado.

    – Eric TMD

    11 de junio de 2015 a las 14:54

<?php
//--- Filter for remove any payment gateway as per the user role selected --
add_filter('woocommerce_available_payment_gateways','filter_gateways',1);
function filter_gateways($gateways){
    global $woocommerce, $current_user;

    if ( is_user_logged_in() ) {        
        $userRole = implode(',',$current_user->roles);
        if($userRole == 'my_user_role'){
            //-- Remove casho on delivery if following user have logged in
            unset($gateways['cod']);        
        }   
    }else{
        //-- Hide COD if user not logged in 
        unset($gateways['cod']);
    }           
 return $gateways;
}
?>

//– Prueba este, ya he usado este código contra el límite mínimo de pedido

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad