wp-content/themes/satmodo/inc/utils/CustomProductfrontEndScript.php
Thu Jul 31 2025 05:37:08 GMT+0000 (Coordinated Universal Time)
Saved by @anmoltyagi
<?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"> ' + 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()); } } ?>
Comments