Puedes hacerlo con una función como esta:
function ayudawp_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
// Cuando se elige 'entrega local' o sino cambia al método de envío a tu elección
if ( ! in_array( 'local_delivery', $chosen_shipping_rates ) ) :
// Quitamos la pasarela de transferencia o cualquier otra que tengas
unset( $gateways['cod'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'ayudawp_available_payment_gateways' );
Anonymous User 15528382
(@anonymized-15528382)
Grande @fernandot! esta la guardo a buen recaudo 🙂
Iniciador del debate
ethink1
(@ethink1)
Muchas gracias Fernando, ¿dónde tendría que meterlo? ¿En functions.php o en otro sitio?
Al ser algo independiente del tema mejor en tu propio plugin de personalizaciones:
https://ayudawp.com/crea-tu-primer-plugin-wordpress/
Iniciador del debate
ethink1
(@ethink1)
¿Me podrías ayudar con la personalización?
En mi caso, en lugar de local_delivery, ¿qué tendría que poner? He estado mirando… ¿flat_rate?
¿Solo con eso ya estaría?
Gracias por la ayuda
Anonymous User 15528382
(@anonymized-15528382)
Hola @ethink1, tienes estas opciones por defecto, según utilices:
Precio fijo: «flat_rate»
Envío gratuito: «free_shipping»
Recogida local: «local_pickup»
Por ejemplo, para el precio fijo:
function ayudawp_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods' );
// Cambia al método de envío a tu elección
// Precio fijo: "flat_rate", Envío gratuito: "free_shipping", Recogida local: "local_pickup"
if ( ! in_array( 'flat_rate', $chosen_shipping_rates ) ) :
// Quitamos la pasarela de transferencia o cualquier otra que tengas
unset( $gateways['cod'] );
endif;
return $gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'ayudawp_available_payment_gateways' );
Un saludo!
Iniciador del debate
ethink1
(@ethink1)
Muchas gracias por la respuesta pero creo que entonces no me he explicado bien.
No necesito discriminar el precio fijo, necesito que para Resto del Mundo no se pueda elegir la opción de contrareembolso. Pero para Península si se pueda.
Ambos tipos de envío tienen precio fijo.
Saludos
-
Esta respuesta fue modificada hace 2 años, 7 meses por
Fernando Tellado. Razón: Anonimizar nombres de usuarios
Anonymous User 15528382
(@anonymized-15528382)
@ethink1 disculpa. Para hacer eso puedes utilizar un plugin que amplía las funcionalidades del contrareembolso:
https://wordpress.org/plugins/wc-smart-cod/
Espero que te sea de ayuda!
Iniciador del debate
ethink1
(@ethink1)
Muchísimas gracias esto era justo lo que necesitaba!
-
Esta respuesta fue modificada hace 2 años, 7 meses por
Fernando Tellado. Razón: Anonimizar nombres de usuarios
Anonymous User 15528382
(@anonymized-15528382)
Fantástico @ethink1! Puedes marcar el debate como «resuelto» 🙂