theme page modify custom php wordpress woocommerce cart

php - page - Tarifa personalizada basada en las dimensiones y categorías del producto



woocommerce checkout theme (1)

Actualizado: Compatibilidad adicional con WooCommerce 3+

Esto es posible y fácil con el método add_fee() en el hook woocommerce_cart_calculate_fees . Aquí hay un ejemplo de uso simple para productos simples, con 2 categorías y basado en los cálculos de medición de las dimensiones del producto para cada artículo del carrito. También es posible para otros tipos de productos.

Aquí está el código de ejemplo (que deberá personalizar para su propio caso):

add_action( ''woocommerce_cart_calculate_fees'',''custom_applied_fee'', 10, 1 ); function custom_applied_fee( $cart_object ) { if ( is_admin() && ! defined( ''DOING_AJAX'' ) ) return; // Set HERE your categories (can be an ID, a slug or the name… or an array of this) $category1 = ''plain''; $category2 = ''plywood''; // variables initialisation $fee = 0; $coef = 1; // Iterating through each cart item foreach( $cart_object->get_cart() as $cart_item ){ $product_id = version_compare( WC_VERSION, ''3.0'', ''<'' ) ? $cart_item[''data'']->id : $cart_item[''data'']->get_id(); $product = $cart_item[''data'']; // Get the product object // Get the dimentions of the product $height = $product->get_height(); $width = $product->get_width(); // $length = $product->get_length(); // Initialising variables (in the loop) $cat1 = false; $cat2 = false; // Detecting the product category and defining the category coeficient to change price (for example) // Set here for each category the modification calculation rules… if( has_term( $category1, ''product_cat'', $cart_item[''product_id'']) ) $coef = 1.15; if( has_term( $category2, ''product_cat'', $cart_item[''product_id'']) ) $coef = 1.3; // ## CALCULATIONS ## (Make here your conditional calculations) $dimention = $height * $with; if($dimention <= 10){ $fee += 10 * $coef; } elseif($dimention > 10 && $dimention <= 20){ $fee += 20 * $coef; } elseif($dimention > 20){ $fee += 30 * $coef; } } // Set here the displayed fee text $fee_text = __( ''Packaging fee'', ''woocommerce'' ); // Adding the fee if ( $fee > 0 ) WC()->cart->add_fee( $fee_text, $fee, false ); // Note: Last argument in add_fee() method is related to applying the tax or not to the discount (true or false) }

Deberá establecer sus propias categorías con los cálculos de cambios relacionados para cada categoría. Obtendrá una tarifa de salida general no detallada, calculada teniendo en cuenta cada artículo en el carrito.

El código va en el archivo function.php de su tema (o tema) hijo activo. O también en cualquier plugin de archivos php.

El código está probado y completamente funcional.

Respuestas relacionadas:

Estoy en una situación única con mi sitio WooCommerce.

Necesito agregar una tarifa de empaque, que será algo similar a una tarifa de manejo.

Desafortunadamente, no es tan simple como agregar una tarifa de manejo de $ 5.00 a cada pedido.

Dado que vendo productos de madera en base a sus medidas (ancho x alto), las tarifas de embalaje se basan en el total de pies cuadrados para los artículos. Y también pueden diferir dependiendo de la categoría de los artículos.

He investigado mucho y no puedo encontrar un complemento para manejar esta situación.

Para agregar complejidad, hay una tabla completa que debería crearse. Por ejemplo, si los artículos de una categoría tienen un total de pies cuadrados entre 1 y 10, la tarifa de empaquetado será de $ 10 . Si el sq ftg total está entre 11-20, entonces será $ 20 .

¿Cómo puedo hacer para lograr eso?

Gracias