Saltar al contenido

StudiosJohan

				
					add_action('woocommerce_before_add_to_cart_button', 'agregar_checkbox_flores');

function agregar_checkbox_flores() {
    global $product;

    // Define la categoría específica a la que se aplicará el checkbox
    $categoria_especifica = 'nuevo_categoria'; // Reemplaza 'nombre_de_la_categoria' con el nombre de tu categoría

    // Verifica si el producto pertenece a la categoría específica
    if (has_term($categoria_especifica, 'product_cat', $product->get_id())) {
        echo '<p><label><input type="checkbox" name="agregar_flores" value="si"> Deseas añadir un elemento por solo $20</label></p>';
        echo '<img decoding="async" src="https:#.png" id="imagenFlores" style="display: none;">';
        echo '<script>
            document.addEventListener("DOMContentLoaded", function() {
                const checkboxFlores = document.querySelector(\'input[name="agregar_flores"]\');
                const imagenFlores = document.getElementById("imagenFlores");

                checkboxFlores.addEventListener("change", function() {
                    if (checkboxFlores.checked) {
                        imagenFlores.style.display = "block";
                    } else {
                        imagenFlores.style.display = "none";
                    }
                });
            });
        </script>';
    }
}



// Procesar el valor adicional al carrito cuando se selecciona el checkbox
add_filter('woocommerce_add_cart_item_data', 'procesar_valor_adicional', 10, 3);

function procesar_valor_adicional($cart_item_data, $product_id, $variation_id) {
    if (isset($_POST['agregar_flores']) && $_POST['agregar_flores'] === 'si') {
        // Agrega el costo adicional al carrito, pero no al precio del producto
        $cart_item_data['custom_data']['agregar_flores'] = true;
        $cart_item_data['custom_data']['costo_adicional_flores'] = 20; // Cambia "20" al costo real de las flores
    }
    return $cart_item_data;
}

// Mostrar el costo adicional de las flores en el resumen del pedido del checkout
add_action('woocommerce_review_order_after_order_total', 'mostrar_costo_adicional_checkout');

function mostrar_costo_adicional_checkout() {
    $costo_adicional_flores = 0;

    // Recorre los elementos del carrito para obtener el costo adicional
    foreach (WC()->cart->get_cart() as $cart_item) {
        if (isset($cart_item['custom_data']['agregar_flores']) && $cart_item['custom_data']['agregar_flores'] === true) {
            $costo_adicional_flores += $cart_item['custom_data']['costo_adicional_flores'];
        }
    }

}

// Actualizar el precio total en el checkout
add_action('woocommerce_cart_calculate_fees', 'actualizar_precio_total_checkout');

function actualizar_precio_total_checkout() {
    $costo_adicional_flores = 0;

    // Recorre los elementos del carrito para obtener el costo adicional
    foreach (WC()->cart->get_cart() as $cart_item) {
        if (isset($cart_item['custom_data']['agregar_flores']) && $cart_item['custom_data']['agregar_flores'] === true) {
            $costo_adicional_flores += $cart_item['custom_data']['costo_adicional_flores'];
        }
    }

    // Agrega el costo adicional al total del checkout
    if ($costo_adicional_flores > 0) {
        WC()->cart->add_fee('Costo Adicional', $costo_adicional_flores);
    }
}

//opcional
// Función para mostrar el valor adicional de las flores en correos electrónicos
function mostrar_valor_adicional_en_correos($order, $sent_to_admin, $plain_text, $email) {
    // Verifica si la orden contiene el valor adicional de las flores
    $valor_adicional_flores = '';

    foreach ($order->get_items() as $item_id => $item) {
        if (isset($item['custom_data']['agregar_flores']) && $item['custom_data']['agregar_flores'] === true) {
            $valor_adicional_flores = '20'; // Cambia "20" al costo real de las flores
            break;
        }
    }

    // Si se encontró el valor adicional de las flores, agrégalo al correo
    if (!empty($valor_adicional_flores)) {
        // Agrega una línea separadora
        $email['body'] .= "\n-----------------\n";

        // Agrega el valor adicional al correo con una descripción
        $email['body'] .= __('Valor Adicional:', 'woocommerce') . ' ' . wc_price($valor_adicional_flores);

        // Agrega otra línea separadora
        $email['body'] .= "\n-----------------\n";
    }

    return $email;
}

// Hook para mostrar el valor adicional en correos electrónicos
add_filter('woocommerce_email_order_details', 'mostrar_valor_adicional_en_correos', 10, 4);

// Agregar una columna personalizada para mostrar el costo adicional en la lista de pedidos
function agregar_columna_costo_adicional($columns) {
    $columns['costo_adicional'] = __('Costo Adicional', 'woocommerce');
    return $columns;
}
add_filter('manage_edit-shop_order_columns', 'agregar_columna_costo_adicional', 999);

// Mostrar el valor adicional en la columna personalizada
function mostrar_valor_adicional_en_columna($column, $post_id) {
    if ($column === 'costo_adicional') {
        // Obtén el valor adicional de las flores para este pedido
        $valor_adicional_flores = get_post_meta($post_id, '_costo_adicional_flores', true);

        // Muestra el valor adicional en la columna
        echo wc_price($valor_adicional_flores);
    }
}
add_action('manage_shop_order_posts_custom_column', 'mostrar_valor_adicional_en_columna', 10, 2);

// Haz que la columna sea ordenable
function hacer_columna_ordenable($columns) {
    $columns['costo_adicional'] = 'costo_adicional';
    return $columns;
}
add_filter('manage_edit-shop_order_sortable_columns', 'hacer_columna_ordenable');