Preview:
<?php
#--------------------------------------------------------------------------------------#
#Add Custom frontEnd Script to Iridium 9555 – FREE Phone and Isat 2 Product
#--------------------------------------------------------------------------------------#

add_action('woocommerce_shop_loop_item_title', 'my_update', 10, 1);
function my_update(){
    $producPage = basename(rtrim($_SERVER['REQUEST_URI'],'/'));
    if($producPage == "iridium-phones-purchase"){
        ?>
        <script>
            jQuery(document).ready(function($){
                $('.post-246776').find('div[class="price"]').remove();
            })
        </script>
        <?php
    }
}
add_action('woocommerce_before_single_product', 'custom_function_before_single_product');
function custom_function_before_single_product() {
    try{
        $productName = basename(rtrim($_SERVER['REQUEST_URI'],'/'));
        if($productName == 'iridium-9555-free-phone' || $productName == 'isat-2' || $productName == 'iridium-9575-free-phone' || $productName == 'starlink-standard-gen-3' || $productName == 'starlink-mini-terminal'){
            ?>
            <script>
                jQuery(document).ready(function($){
                    const getProductName = "<?php echo $productName ?>"
                    $('.product-details').css('padding','0px');
                    $('.woocommerce-product-rating').remove();
                    $('.bundled_product_checkbox').prop('checked', true);
                    $('#pa_minute-subscription').val('150-min-plan-90-00-month');
                    $('#pa_inmarsat-voice').val('60-voice-min-month-64-99-month');
                    $('#pa_usa-phone-number').val('yes');
                    $('#pa_rollover-minutes').val('yes');
                    $('#pa_rollover-minutes').before('<span style="color:black">Rollover Minutes</span>');
                    $('#pa_usa-phone-number').before('<span style="color:black">USA Phone Number</span>');
                    // $('pa_starlink-13-month-plan').val('local-us-unlimited-data-1tb-priority-290-00'); // bundle_attribute_pa_starlink-13-month-plan_282
                    
                    function appendPriceIfNotAppended(productName, price) {
                        if ($('.item_title:contains("' + productName + '")').closest('h4').find('.price-appended').length === 0) {
                            $('.item_title:contains("' + productName + '")').each(function() {
                                $(this).closest('h4').append('<span class="price-appended" style="color:black">&nbsp;' + price + '</span>');
                            });
                        }
                    }
                    function appendPriceAfterSolarCharger() {
                        appendPriceIfNotAppended("Solar Charger", "$34.99");
                        appendPriceIfNotAppended("Hard Case", "$44.99");
                        var batteryPrice = '$99.00';
                        if(getProductName == "isat-2"){
                            batteryPrice  =  '$55.00';
                        }else if(getProductName == "iridium-9555-free-phone"){
                            batteryPrice  =  '$99.00';
                        }
                        appendPriceIfNotAppended("Extra battery", batteryPrice);
                    }
                    function uncheckIfChecked($checkbox) {
                        if ($checkbox.is(':checked')) {
                            $checkbox.trigger('click');
                        }
                    }
                    if ($('.item_title:contains("Solar Charger")').length === 0) {
                        $(document).ajaxComplete(function(event, xhr, settings) {
                            appendPriceAfterSolarCharger();
                            const $isatCheckbox = $('.item_title:contains(IsatPhone Voice Yearly)').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');
                            const $isatCheckboxMonthly = $('.item_title:contains(IsatPhone Voice Monthly)').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');
                            const $iridiumCheckbox = $('.item_title:contains(Iridium Monthly Minute Plans (Paid Yearly))').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox'); 
                            const $iridiumCheckboxMonthly = $('.item_title:contains(Iridium Monthly Minute Plans)').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox'); 
                            const $starlinkOneMonthCheckbox = $('.item_title:contains(Plans with a one-month minimum term)').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');
                            const $starlinkYearlyCheckbox = $('.item_title:contains(Promo Plan (Paid Yearly))').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');
                            const $starlinkmonthlyCheckbox = $('.item_title:contains(Promo Plan (Six Months))').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');

                            // const $starlinkMTOneMonthCheckbox = $('.item_title:contains(Plans with a one-month minimum term)').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');
                            const $starlinkMTYearlyCheckbox = $('.item_title:contains(Starlink Promo Plan (Paid Yearly))').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');
                            const $starlinkMTmonthlyCheckbox = $('.item_title:contains(Starlink Promo Plan (Six Months))').closest('.bundled_product_optional_checkbox').find('.bundled_product_checkbox');

                            uncheckIfChecked($isatCheckbox);
                            uncheckIfChecked($iridiumCheckbox);
                            uncheckIfChecked($starlinkYearlyCheckbox);
                            uncheckIfChecked($starlinkmonthlyCheckbox);

                            uncheckIfChecked($starlinkMTYearlyCheckbox);
                            uncheckIfChecked($starlinkMTmonthlyCheckbox);
                            let hrefValue;
                            hrefValue = $('a.checkout-btn.single_add_to_cart_button.bundle_add_to_cart_button').attr('href');
                            $('.checkout-btn.single_add_to_cart_button.bundle_add_to_cart_button').removeAttr('href');
                            $(document).on('click', 'a.checkout-btn.single_add_to_cart_button.bundle_add_to_cart_button', function() {
                                checkoutFunction();
                                $(this).off('click');
                            });
                            function checkoutFunction() {
                                $('.checkout-btn.single_add_to_cart_button.bundle_add_to_cart_button').attr('href', hrefValue).trigger('click');
                            }
                            function disableCartButtons(){
                                $('.single_add_to_cart_button.bundle_add_to_cart_button').prop('disabled', true).attr('type', 'button');
                                $('.checkout-btn.single_add_to_cart_button.bundle_add_to_cart_button').addClass('disabled').removeAttr('href').on('click', function(e) {e.preventDefault();});
                            }

                            function enableCartButtons(){
                                $('.single_add_to_cart_button.bundle_add_to_cart_button').prop('disabled', false).attr('type', 'submit');
                                $('.checkout-btn.single_add_to_cart_button.bundle_add_to_cart_button').removeClass('disabled').off('click');
                            }

                            let isatVoiceBox = $isatCheckboxMonthly.parent().parent().find('#pa_inmarsat-voice');
                            let isatMinuteBox = $isatCheckboxMonthly.parent().parent().find('#pa_rollover-minutes');
                            let isatNumberBox = $isatCheckboxMonthly.parent().parent().find('#pa_usa-phone-number');
                            isatVoiceBox.add(isatMinuteBox).add(isatNumberBox).on('change',function(){
                                if(isatVoiceBox.val() == '' || isatMinuteBox.val() == '' || isatNumberBox.val() == ''){
                                    disableCartButtons();
                                }else{
                                    enableCartButtons();
                                }
                            })

                            let starlinkVoiceBox = $starlinkOneMonthCheckbox.parent().parent().find('#pa_starlink-13-month-plan'); 
                            starlinkVoiceBox.on('change',function(){
                                if(starlinkVoiceBox.val() == ''){
                                    disableCartButtons();
                                }else{
                                    enableCartButtons();
                                }
                            })

                            let iridiumVoiceBox = $iridiumCheckboxMonthly.parent().parent().find('#pa_minute-subscription');
                            let iridiumMinuteBox = $iridiumCheckboxMonthly.parent().parent().find('#pa_rollover-minutes');
                            let iridiumNumberBox = $iridiumCheckboxMonthly.parent().parent().find('#pa_usa-phone-number');
                            iridiumVoiceBox.add(iridiumMinuteBox).add(iridiumNumberBox).on('change',function(){
                                if(iridiumVoiceBox.val() == '' || iridiumMinuteBox.val() == '' || iridiumNumberBox.val() == ''){
                                    disableCartButtons();
                                }else{
                                    enableCartButtons();
                                }
                            })
                            
                            $starlinkOneMonthCheckbox.add($starlinkYearlyCheckbox).add($starlinkmonthlyCheckbox).on('click', function() {                                
                                if (!$starlinkOneMonthCheckbox.is(':checked') && !$starlinkYearlyCheckbox.is(':checked') && !$starlinkmonthlyCheckbox.is(':checked')){
                                    disableCartButtons();
                                }else{
                                   let starlinkOneMonthCheckboxVoice = $(this).parent().parent().find('#pa_starlink-13-month-plan');
                                   let starlinkYearlyCheckboxVoice = $(this).parent().parent().find('#pa_starlink-promo-plan');
                                   let starlinkmonthlyCheckboxVoice = $(this).parent().parent().find('#pa_starlink-promo-plan');

                                    starlinkOneMonthCheckboxVoice.val('stationary-unlimited-data-40gb-priority');
                                    starlinkYearlyCheckboxVoice.val('500gb-mobile-priority-us-device-included');
                                    starlinkmonthlyCheckboxVoice.val('1tb-mobile-priority-us-device-included');

                                   starlinkOneMonthCheckboxVoice.add(starlinkYearlyCheckboxVoice).add(starlinkmonthlyCheckboxVoice).on('change',function(){
                                        if(starlinkOneMonthCheckboxVoice.val() == '' || starlinkYearlyCheckboxVoice.val() == '' || starlinkmonthlyCheckboxVoice.val() == ''){
                                            disableCartButtons();
                                        }else{
                                            enableCartButtons();
                                        }
                                    })
                                    enableCartButtons();
                                }
                            });

                            $starlinkOneMonthCheckbox.add($starlinkMTYearlyCheckbox).add($starlinkMTmonthlyCheckbox).on('click', function() {                                
                                if (!$starlinkOneMonthCheckbox.is(':checked') && !$starlinkYearlyCheckbox.is(':checked') && !$starlinkmonthlyCheckbox.is(':checked')){
                                    disableCartButtons();
                                }else{
                                   let starlinkOneMonthCheckboxVoice = $(this).parent().parent().find('#pa_starlink-13-month-plan');
                                   let starlinkYearlyCheckboxVoice = $(this).parent().parent().find('#pa_starlink-promo-plan');
                                   let starlinkmonthlyCheckboxVoice = $(this).parent().parent().find('#pa_starlink-promo-plan');

                                    starlinkOneMonthCheckboxVoice.val('stationary-unlimited-data-40gb-priority');
                                    starlinkYearlyCheckboxVoice.val('500gb-mobile-priority-us');
                                    starlinkmonthlyCheckboxVoice.val('1tb-mobile-priority-us-accessories-included');

                                   starlinkOneMonthCheckboxVoice.add(starlinkYearlyCheckboxVoice).add(starlinkmonthlyCheckboxVoice).on('change',function(){
                                        if(starlinkOneMonthCheckboxVoice.val() == '' || starlinkYearlyCheckboxVoice.val() == '' || starlinkmonthlyCheckboxVoice.val() == ''){
                                            disableCartButtons();
                                        }else{
                                            enableCartButtons();
                                        }
                                    })
                                    enableCartButtons();
                                }
                            });

                            $isatCheckbox.add($isatCheckboxMonthly).on('click', function() {
                                if (!$isatCheckbox.is(':checked') && !$isatCheckboxMonthly.is(':checked')){
                                    disableCartButtons();
                                }else{
                                   let isatVoice = $(this).parent().parent().find('#pa_inmarsat-voice');
                                   let isatMinute = $(this).parent().parent().find('#pa_rollover-minutes');
                                   let isatNumber = $(this).parent().parent().find('#pa_usa-phone-number');

                                   isatVoice.val('60-voice-min-month-64-99-month');
                                   isatMinute.val('yes');
                                   isatNumber.val('yes');
                                   isatVoice.add(isatMinute).add(isatNumber).on('change',function(){
                                        if(isatVoice.val() == '' || isatMinute.val() == '' || isatNumber.val() == ''){
                                            disableCartButtons();
                                        }else{
                                            enableCartButtons();
                                        }
                                    })
                                    enableCartButtons();
                                }
                            });

                            $iridiumCheckbox.add($iridiumCheckboxMonthly).on('click', function() {
                                if (!$iridiumCheckbox.is(':checked') && !$iridiumCheckboxMonthly.is(':checked')){
                                    disableCartButtons();
                                }else{
                                    const iridiumVoice = $(this).parent().parent().find('#pa_minute-subscription');
                                    const iridiumMinute = $(this).parent().parent().find('#pa_rollover-minutes');
                                    const iridiumNumber = $(this).parent().parent().find('#pa_usa-phone-number');

                                    iridiumVoice.val('150-min-plan-90-00-month');
                                    iridiumMinute.val('yes');
                                    iridiumNumber.val('yes');
                                    iridiumVoice.add(iridiumMinute).add(iridiumNumber).on('change',function(){
                                            if(iridiumVoice.val() == '' || iridiumMinute.val() == '' || iridiumNumber.val() == ''){
                                                disableCartButtons();
                                            }else{
                                                enableCartButtons();
                                            }
                                        })
                                        enableCartButtons();
                                }
                            });
                        });
                    }
                })
            </script>
            <?php
        }
    }catch(Exception $e){
        error_log("An error occurred: custom_function_before_single_product>>(CustomProductfrontEndScript.php)" . $e->getMessage());
    }
	
}

#--------------------------------------------------------------------------------------#
# Add check for promo phones
#--------------------------------------------------------------------------------------#
add_filter('woocommerce_add_to_cart_validation', 'validate_optional_bundle_items_selected', 10, 5);

function validate_optional_bundle_items_selected($passed, $product_id, $quantity, $variation_id = 0, $cart_item_data = []) {
	try{
		$product = wc_get_product($product_id);
		$productNameArray = ['Iridium 9555 - Almost Free Phone','Iridium 9575 - Promo Phone','Inmarsat IsatPhone 2 (Promo)','Starlink Standard GEN 3','Starlink Mini Terminal'];
		$required_optional_ids = [243,266,238,265,267,268,282,284,286,283,290,291];
		$selectedIds = array_filter($required_optional_ids, function($id) {
			return isset($_REQUEST["bundle_selected_optional_{$id}"]);
		});

        if ( empty($selectedIds) && in_array($product->get_name(),$productNameArray) ){
            WC()->session->set('custom_validation_notice', true);
			return false;
		}

		return $passed;
	}catch(Exception $e){
			error_log("An error occurred: validate_optional_bundle_items_selected>>(functions.php)" . $e->getMessage());
            return $passed;
		}
}

add_action('template_redirect', 'notice_on_empty_cart_plans');
function notice_on_empty_cart_plans(){
    try{
        $show_notice  = WC()->session->get('custom_validation_notice');
        if ($show_notice ){
            wc_add_notice(__('Please select at least one applicable plan before proceeding.', 'woocommerce'), 'error');
            WC()->session->__unset('custom_validation_notice');
        }
    }catch(Exception $e){
			error_log("An error occurred: notice_on_empty_cart_plans()" . $e->getMessage());
		}
}

add_action("woocommerce_cart_is_empty","notice_on_empty_cart_plans_cart_page");
function notice_on_empty_cart_plans_cart_page(){
    try{
        ?>
        <style>
            .woocommerce-error {
                display:flex;
                border-radius: 8px;
                background-color: #faf6f6;
                color: #333;
                padding: 15px 20px;
                margin: 20px 0;
                font-size: 16px;
                font-family: inherit;
                box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
            }
            .woocommerce-error ul {
                margin: 0;
                padding: 0;
                list-style: none;
            }
            .woocommerce-error li {
                margin: 0;
            }
            .woocommerce-error::before {
                display: none;
            }
        </style>
        <div class="woocommerce-error" role="alert">
            <ul>
                <li>Please select at least one applicable plan before proceeding.</li>
            </ul>
        </div>
        <?php
    }catch(Exception $e){
			error_log("An error occurred: notice_on_empty_cart_plans_cart_page()" . $e->getMessage());
	}
    
}
?>
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter