Rechercher

Selectionnez automatiquement une option de variation si elle est la seule disponible dans un produit Woocommerce

Placeholder image

Ce script permet de selectionner automatiquement une option de variation d’un produit dans woocommerce si elle est la seule disponible. Par exemple, si vous choisissez un t-shirt en S et que la seule couleur disponible pour cette taille est bleu, cette option sera automatiquement selectionnée.



add_action( 'wp_footer', 'auto_select_variation_option' );
function auto_select_variation_option() {
    if ( ! is_product() ) {
        return;
    }
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($){

            // Fonction pour sélectionner automatiquement l'attribut avec une seule option disponible
            function autoSelectSingleOption() {
                var changeTriggered = false; // Drapeau pour suivre si un changement a été déclenché

                $('.variations_form .variations select').each(function(){
                    if (changeTriggered) {
                        return false; // Sortir de la boucle si un changement a été déclenché
                    }

                    var select = $(this);
                    var selectedVal = select.val(); // Vérifier si une valeur est déjà sélectionnée
                    var options = select.find('option').not(':disabled'); // Obtenir les options disponibles

                    // Vérifier s'il n'y a qu'une seule option sélectionnable et aucune sélection faite
                    if (options.length === 2 && !selectedVal) { 
                        var optionToSelect = options.last().val(); // La seule option disponible

                        // Vérifier si cette option est déjà sélectionnée
                        if (select.val() !== optionToSelect) {
                            select.val(optionToSelect).trigger('change'); // Sélectionner et déclencher WooCommerce
                            changeTriggered = true; // Marquer qu'un changement a été déclenché
                        }
                    }
                });
            }

            // Lorsque la page est chargée et que la sélection change, on vérifie si une sélection automatique doit être faite
            $('.variations_form').on('woocommerce_variation_select_change', function() {
                if (!$('.variations_form').hasClass('processing')) { // Éviter de lancer si Ajax est déjà en cours
                    setTimeout(() => {
                      autoSelectSingleOption(); // Exécuter lors du changement de variation
                    }, 160);
                }
            });

        });
    </script>
    <?php
}