Hola,
Como puedo anadir en la segunda opción de Courier Delivery (entrega por mensajero), la opción que no sea ni 'Flat Fee' ni 'Free Shipping', sino la opción de poner coste 'o' y mencionar algo como "Please contact us with your suburb for a delivery quote.". Es decir, quiero dar la opción para las entregas a largo distancia, de contactar directamente y en el checkout se pone coste cero.
He tratado de anadir un 'Shipping method' aquí, pero no me da la opción de crearlo.
Muchas gracias!
Un saludo,
Carolina
Contenido solo visible a usuarios registrados
Hola Carolina.
.- Instala el siguiente plugin:
-> https://fr.wordpress.org/plugins/code-snippets/
Una vez instalado:
.- Accede a Fragmentos de código -> Añadir nuevo
.- Añade un título para tenerlo identificado y añade el siguiente código:
add_action('woocommerce_shipping_init', function() {
class WC_Shipping_Contact_Quote extends WC_Shipping_Method {
public function __construct($instance_id = 0) {
$this->id = 'contact_quote';
$this->instance_id = absint($instance_id);
$this->method_title = 'Cotización de envío';
$this->method_description = 'Cliente debe contactar para presupuesto';
$this->supports = array('shipping-zones');
$this->init();
}
public function init() {
$this->init_form_fields();
$this->init_settings();
add_action('woocommerce_update_options_shipping_' . $this->id, array($this, 'process_admin_options'));
}
public function calculate_shipping($package = array()) {
$rate = array(
'id' => $this->get_rate_id(),
'label' => $this->title ?: 'Please contact us with your suburb for a delivery quote',
'cost' => 0,
'package' => $package,
);
$this->add_rate($rate);
}
}
});
add_filter('woocommerce_shipping_methods', function($methods) {
$methods['contact_quote'] = 'WC_Shipping_Contact_Quote';
return $methods;
});
.- Pulsa en guardar y activar:
.- Accede a WooCommerce -> Ajustes -> Envíos
.- Edita la zona de envió donde quieres añadirlo
.- Pulsa en Añadir método de envío
Verás que tienes un nuevo método de envió con el nombre Cotización de envío.
Un saludo
Perfecto. Una cosita, en el Checkout ahora aparece correctamente, aunque pone FREE. Hay manera de quitar el FREE, ya que no seria correcto si es que va a haber un coste asociado. Mejor si no aparece nada en ese caso. Gracias!
Hola Carolina.
Prueba añadir lo siguiente debajo del otro codigo:
add_filter( 'woocommerce_cart_shipping_method_full_label', 'remove_free_text_from_custom_shipping', 9999, 2 );
function remove_free_text_from_custom_shipping( $label, $method ) {
if ( $method->id === 'contact_quote' || $method->method_id === 'contact_quote' ) {
$label = $method->get_label();
}
return $label;
}
Un Saludo
Hola Pepe,
He pegado el código pero sigue apareciendo igual:
Asi eś como esta pegado:
Saludos,
Carolina
Hola Carolina.
Ok vamos a ocultarlo por css.
.- Añade lo siguiente en apariencia -> Personalizar -> CSS Adicional:
.wp-block-woocommerce-checkout-order-summary-shipping-block
.wc-block-components-totals-shipping
.wc-block-components-totals-item__value
strong {
display: none !important;
}
Un saludo
Hola Pepe,
En la pagina de Chekout, veo quel el FREE ya no aparece donde esta el 'Order Summary", pero sigue apareciendo donde esta las 'Shipping Options"
Habría que anadir algo mas?
Gracias,
Un saludo,
Carolina
Hola Carolina.
Añade lo siguiente:
.wc-block-components-totals-shipping strong {
display: none;
}
span.wc-block-checkout__shipping-option--free {
display: none;
}
Un saludo