Habilitación del envío gratuito en Woo Commerce por artículos específicos [cerrado]

8

Me gustaría saber si es posible habilitar el envío gratuito con Woo Commerce solo si ciertos artículos (o artículos de ciertas categorías / clases de envío) están incluidos en el carrito.

La opción de envío gratuito solo se activa en función del valor del carrito o mediante un código de cupón, así que investigué el envío de tarifa plana y descubrí que prioriza la clase de envío más cara sobre las más baratas. Esto significa que la clase de envío gratuito que creé nunca anula el cargo predeterminado.

Entiendo la lógica detrás de esto, pero es lo contrario de lo que necesito, ya que la idea es incentivar las compras de productos con un margen de beneficio más alto eliminando los cargos de entrega cuando se incluyen en un pedido.

No sé si lo que estoy tratando de lograr simplemente no es posible dentro de Woo Commerce. Un cupón que solo se aplica a ciertos productos / categorías parece ser lo más cercano que puedo obtener, pero prefiero no obligar a los usuarios a ingresar un código al momento de pagar.

¿Alguien sabe si hay formas más simples de dar a los usuarios que compran ciertos productos envío gratuito?

James O'Neill
fuente
3
¿Cómo diablos esta pregunta relacionada con el complemento de Wordpress , votada 8 veces y favorecida 3 veces por los desarrolladores de Wordpress se cierra como "fuera de tema" Oo
Ben
@Ben porque es un complemento de WooCommerce, y no una pregunta específica de WordPress (como se indica en el centro de ayuda )
Alexander Holsgrove

Respuestas:

1

Quizás esto no responda completamente a su pregunta, pero el complemento de envío de tarifa de tabla le da la opción de establecer una prioridad para una tarifa particular. Además, esta discusión da muchas pistas sobre dónde podría buscar soluciones

Ewout
fuente
Gracias. Mirando la documentación para el envío de tarifa de tabla, parece que hará lo que necesito. Si mi empleador solicita la licencia, actualizaré si es útil.
James O'Neill
No publique enlaces a recursos externos. Más bien invocalos aquí y usa el enlace que está encima. Si el enlace desaparece, la respuesta es inútil y estamos luchando duro para evitar que se pudra el enlace. -1
kaiser
5

¿Alguien sabe si hay formas más simples de dar a los usuarios que compran ciertos productos envío gratuito?

En realidad, al crear un producto, puede marcarlo como un producto virtual directamente en el editor de productos y eso excluirá el envío por completo para ese artículo.

Nathan
fuente
1
Esto funciona para productos simples, pero no para otros tipos de productos, por ejemplo, variables. Buen intento sin embargo. Esto probablemente funcionará para algunas personas.
Alexander Lee Williams el
¿Por qué esto no funciona para productos variables? Puede marcar cada variación como virtual.
BFTrick
Estoy de acuerdo @BFTrick
Nathan
1
Esto también es malo porque el sistema no accederá a la dirección de ENVÍO del cliente, lo cual es bastante importante;)
Kane
2

Aquí hay un fragmento recopilado de algunos Gists de una discusión sobre un problema de GitHub vinculado por @Ewout en otra respuesta. Agregué un var_dump(), para que pueda descomentar y verificar qué es exactamente lo que desea eliminar.

$available_methodses un arrayde:

$available_methods as $method_id => $method

Compare con $method_idsi necesita verificaciones más específicas.

// Hide standard shipping option when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'wpse90835_hide_standard_shipping_when_free_is_available' );
/**
 *  Hide Standard Shipping option when free shipping is available
 * 
 * @param array $available_methods
 */
function wpse90835_hide_standard_shipping_when_free_is_available( $available_methods )
{
    // Developers!: Dump this to see what you can unset
    # var_dump( $available_methods );

    // remove standard shipping option
    if ( 
        isset( $available_methods['free_shipping'] ) 
        AND isset( $available_methods['flat_rate'] )
    )
        unset( $available_methods['flat_rate'] );


    return $available_methods;
}
emperador
fuente
2

He creado un complemento de WooCommerce que permite a los usuarios configurar opciones avanzadas para envío gratuito. En el complemento es posible seleccionar ciertos productos para envío gratuito.

Puede encontrar el complemento gratis en wordpress.org llamado WooCommerce Advanced Free Shipping

Espero que esto ayude.

Sormano
fuente
0

Basado en el código de Kaiser (arriba), he creado el siguiente código:

    /**
 *  Hide free shipping option when Standard Shipping is available
 * 
 * @param array $available_methods
 */
function mwe_hide_free_shipping_when_standard_shipping_is_available($available_methods) {

    // remove standard shipping option
    if (isset($available_methods['free_shipping']) AND isset( $available_methods['flat_rate'])) {
        unset($available_methods['free_shipping']);
    }

    return $available_methods;
}
add_filter('woocommerce_available_shipping_methods', 'mwe_hide_free_shipping_when_standard_shipping_is_available');

Y a cambio de configurar WooCommerce, tengo el envío gratuito y la tarifa plana habilitados en las Opciones de envío de Woo. Luego, solo configuro una Clase de envío, especifico su costo (por ejemplo, £ 7.95) en la página de opciones de Tarifa fija y luego agrego esa clase de envío a los productos por los que quiero cobrar £ 7.95 p & p.

prohibición de geoingeniería
fuente
0

La opción "virtual" eliminará todos los costos de envío, pero también elimina la opción de enviar a una dirección diferente a la dirección de facturación del cliente. Esto no es un problema si el cliente también compra otros productos no virtuales, pero lo es si es lo único que compra.

usuario51366
fuente