add_filter('woocommerce_cart_calcular_tarifas', 'agregar_tarifa_de_envio_adicional'); función agregar_tarifa_de_envío_adicional() { $país_de_envío = WC()->cliente->obtener_país_de_envío(); si ($shipping_country == 'US') { WC()->cart->add_fee('Tarifa de envío adicional', 10.00); } }
Categoría: WooCommerce
Agregar campo personalizado para productos
add_action('opciones_de_producto_woocommerce_datos_generales_del_producto', 'agregar_campo_de_producto_personalizado'); función add_custom_product_field() { woocommerce_wp_text_input(array( 'id' => 'custom_field', 'label' => __('Campo personalizado', 'woocommerce'), 'placeholder' => __('Ingrese la información aquí.'), 'desc_tip' => 'true', )); } add_action('woocommerce_process_product_meta', 'guardar_campo_de_producto_personalizado'); función guardar_campo_producto_personalizado($post_id) { $campo_personalizado = $_POST['campo_personalizado']; si (!vacío($campo_personalizado)) { actualizar_post_meta($post_id, 'campo_personalizado', esc_attr($campo_personalizado)); } }
Ocultar las opciones de envío según el contenido del carrito de compras
add_filter(‘woocommerce_package_rates’, ‘hide_shipping_based_on_cart_content’, 10, 2); function hide_shipping_based_on_cart_content($rates, $package) { $cart_contains_digital_products = false; foreach ($package[‘contents’] as $item) { $product = $item[‘data’]; if ($product->is_downloadable()) { $cart_contains_digital_products = true; break; } } if ($cart_contains_digital_products) { foreach ($rates as $rate_id => $rate) { if (‘flat_rate’ === $rate->method_id) { unset($rates[$rate_id]); // Flat Rate Versand entfernen } } } return $rates; } […]
Agregue una tarifa adicional según la cantidad de productos
add_action('woocommerce_cart_calcular_tarifas', 'agregar_tarifa_según_la_cantidad_de_productos'); función agregar_tarifa_basada_en_el_recuento_de_productos() { $recuento_de_productos = WC()->carrito->obtener_recuento_de_contenidos_del_carrito(); si ($product_count >= 5) { WC()->cart->add_fee('Tarifa adicional', 5.00); } }
Ocultar productos de determinadas categorías en la página de la tienda
add_action('pre_get_posts', 'excluir_productos_de_categorías'); función excluir_productos_de_categorías($query) { si (es_tienda() y $query->es_consulta_principal()) { categorías_excluidas = matriz(7, 8, 9); // Categorías a excluir $query->set('tax_query', array( array( 'taxonomy' => 'product_cat', 'field' => 'id', 'terms' => $excluded_categories, 'operator' => 'NOT IN', ), )); } }
Cambiar el precio del producto según la ubicación del usuario
add_filter(‘woocommerce_product_get_price’, ‘adjust_price_by_user_location’, 10, 2); function adjust_price_by_user_location($price, $product) { $user_country = WC()->customer->get_billing_country(); if ($user_country == ‘US’) { $price = $price * 1.1; // 10% Aufschlag für US-Kunden } return $price; }
Aplicar código de cupón según la categoría del producto
add_action('woocommerce_before_cart', 'aplicar_cupón_según_la_categoría'); función aplicar_cupón_basado_en_categoría() { $código_cupón = 'CÓDIGO_CATEGORÍA'; // Código de cupón para una categoría específica $target_category = 'sale'; // Nombre de la categoría $cart = WC()->cart; $coupon_applied = falso; foreach ($cart->get_cart() como $cart_item) { $product = $cart_item['datos']; si (tiene_término(categoría_objetivo, 'cat._producto', producto->obtener_id())) { cupón_aplicado = verdadero; romper; } } si (!$cupón_aplicado) { $cart->aplicar_cupón($cupón_código); } }
Cambiar los costos de envío en función del peso de los productos
add_filter('woocommerce_package_rates', 'ajustar_los_costos_de_envio_por_peso', 10, 2); función ajustar_costos_de_envio_por_peso($ratos, $paquete) { $peso_total = WC()->carrito->obtener_peso_del_contenido_del_carrito(); si ($peso_total > 10) { foreach ($rates como $rate_id => $rate) { $rates[$rate_id]->costo += 7.00; // Costos de envío adicionales para paquetes pesados } } return $rates; }
Ocultar productos en la categoría “Rebajas”
add_action('pre_get_posts', 'excluir_productos_de_categoría_de_venta'); función excluir_categoría_venta_productos($query) { if (is_shop() && $query->is_main_query()) { $query->set('consulta_impuestos', array( array( 'taxonomía' => 'categoría_producto', 'campo' => 'slug', 'términos' => 'venta', 'operador' => 'NO ESTÁ EN', ), )); } }
Envío gratuito para pedidos superiores a un importe determinado
add_filter('woocommerce_shipping_el_envío_gratuito_está_disponible', 'envío_gratuito_por_encima_del_umbral', 10, 2); función envío_gratis_por_encima_del_umbral($está_disponible, $paquete) { $umbral_de_envío_gratis = 75; // Importe a partir del cual el envío es gratuito $cart_total = WC()->cart->get_cart_contents_total(); si ($cart_total >= $umbral_de_envío_gratis) { $está_disponible = verdadero; } devolver $is_available; }