fbpixel

Ocultar mercadopago segun pais

Encontré este snippet que oculta métodos de pagos según país, pero no sé cómo se llama mercadopago en el código:

Lo que quiero hacer es que en argentina muestre mercadopago únicamente y que en el resto del mundo muestre PayPal

También podés usar el plugin WooCommerce – Country Based Payments que te permite elegir qué pasarelas de pagos están habilitadas/deshabilitadas según el país del visitante.

1 me gusta

Parece ser lo que necesito. Lo que no me gusta es lo siguiente:
Cuando analizo si utilizar un plugin o codigo, descargo el plugin que soluciona mi requirimiento y me fijo, además de si está mantenido y tiene buenas referencias, en el peso.

En este caso, lo que un snippet de unas pocas lineas me podría resolver, lo tengo un plugin de 976kb (el zip comprimido).

Y eso me hace dudar…

Lo descomprimí y casi me desmayo! 43.7mb!!!

Con get_payment_method() obtenes el metodo de pago, tengo un snippet que me lo agrega en la lista de pedidos :
/* Agrega columnas a la lista de pedidos /
/
manage_edit-shop_order_columns - Agrega los nombres de las columnas /
add_filter(‘manage_edit-shop_order_columns’,‘agrega_nombre_columnas’ );
function agrega_nombre_columnas($columns)
{
$columns[‘MPago’] = ‘MPago’;
$columns[‘Envio’] = ‘Envio’;
return $columns;
}
/
manage_shop_order_posts_custom_column - Agrega los valores de cada pedido */
add_action(‘manage_shop_order_posts_custom_column’,‘agrega_valores_campos’ );
function agrega_valores_campos($column)
{
global $post;
$order = wc_get_order( $post->ID );
if (‘MPago’ === $column )
{echo $order->get_payment_method();}
if (‘Envio’ === $column )
{echo substr($order->get_shipping_method(),0,3);}
}

Agrega este y activalo y luego vas a la consulta de lista de pedidos y ahi vas a poder ver el código de cada método de envio. Para Mercado pago a mi me aparece “woo-mercado-pago-basic” pero no se si es el mismo para todas las variantes o si es diferente. Voy a utilizar el snippet que pasas porque quiero agregar paypal para el exterior y todas las soluciones que dan son plug-ins, al igual que vos prefiero los pequeños snippet que los plugins. 35 años de programación me han enseñado que menos es mas además me permiten personalizarlos y agregar mas funcionalidades o quitar lo que no me sirve. Suerte-

1 me gusta

Gracias Tito,

¿a vos te aparece woo-mercado-pago-basic para el plugin de ellos? o sea, este:

Bien,
Gracias Tito por el código, recién me animo a probarlo ya que no soy programador, je

Era como decías, el nombre es woo-mercado-pago-basic

Y lo vi poniendo solo la columan de pago porque la de envío no la necesito.

<?php 
/* Muestro en Pedidos un columna con el metodo de pago utilizado */
/* manage_edit-shop_order_columns - Agrega los nombres de las columnas */
add_filter('manage_edit-shop_order_columns', 'agrega_nombre_columnas');
function agrega_nombre_columnas($columns)
{
    $columns['MPago'] = 'Medio de Pago';
    return $columns;
}
/* manage_shop_order_posts_custom_column - Agrega los valores de cada pedido */
add_action('manage_shop_order_posts_custom_column', 'agrega_valores_campos');
function agrega_valores_campos($column)
{
    global $post;
    $order = wc_get_order($post->ID);
    if ('MPago' === $column) {
        echo $order->get_payment_method();
    }
 }
1 me gusta

Estamos mal pero vamos bien…

Agregué este codigo en functions.php y funciona, pero…

<?php // Ocultar pasarela de pago segun país

add_filter('woocommerce_available_payment_gateways', 'dl_ocultar_pago_checkout', 10, 1);

function dl_ocultar_pago_checkout($array_payments)
{

    if (WC()->customer->get_billing_country() == 'AR') //Aquí ponemos el código del país, puedes consultarlo en woocommerce.com
        unset($array_payments['paypal']); // Oculto PayPal para AR
    else
        unset($array_payments['woo-mercado-pago-basic']); // Oculto Mercado Pago para otros paises

    return $array_payments;
}

aasd
Cuando quiero entrar al administrador de wp, me da error.

Activé el debug y me dice esto:

Warning: include_once(/home/c1790402/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase1.php): failed to open stream: No such file or directory in /home/c1790402/public_html/wp-content/advanced-cache.php on line 22

Warning: include_once(): Failed opening ‘/home/c1790402/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase1.php’ for inclusion (include_path=’.:/opt/php7-4/lib/php’) in /home/c1790402/public_html/wp-content/advanced-cache.php on line 22

Warning: Cannot modify header information - headers already sent by (output started at /home/c1790402/public_html/wp-content/advanced-cache.php:22) in /home/c1790402/public_html/wp-includes/functions.php on line 6362

Warning: Cannot modify header information - headers already sent by (output started at /home/c1790402/public_html/wp-content/advanced-cache.php:22) in /home/c1790402/public_html/wp-admin/includes/misc.php on line 1310

Fatal error: Uncaught Error: Call to a member function get_billing_country() on null in /home/c1790402/public_html/wp-content/plugins/gardiens-cutomizer-ar/gardiens-customizer-ar.php:168 Stack trace: #0 /home/c1790402/public_html/wp-includes/class-wp-hook.php(292): dl_ocultar_pago_checkout(Array) #1 /home/c1790402/public_html/wp-includes/plugin.php(212): WP_Hook->apply_filters(Array, Array) #2 /home/c1790402/public_html/wp-content/plugins/woocommerce/includes/class-wc-payment-gateways.php(160): apply_filters(‘woocommerce_ava…’, Array) #3 /home/c1790402/public_html/wp-content/plugins/woocommerce/includes/admin/class-wc-admin-dashboard-setup.php(188): WC_Payment_Gateways->get_available_payment_gateways() #4 /home/c1790402/public_html/wp-content/plugins/woocommerce/includes/admin/class-wc-admin-dashboard-setup.php(71): WC_Admin_Dashboard_Setup->populate_payment_tasks() #5 /home/c1790402/public_html/wp-content/plugins/woocommerce/includes/admin/class-wc-admin-dashboard-setup.php(213): WC_Admin_Dashboard_Setup->__construct() in /home/c1790402/public_html/wp-content/plugins/gardiens-cutomizer-ar/gardiens-customizer-ar.php on line 168

Ha habido un error crítico en esta web. Por favor, comprueba la bandeja de entrada del correo electrónico del administrador de tu sitio para obtener instrucciones.

Que bueno que te sirvió. Abrazo.

1 me gusta