Products: Display Notice When Stock Level is Below 3
Dynamically display a user notice when stock is less than 3.
Important: Always test customizations to your site on a staging environment before making changes to your live / production site. If you are not experienced with testing changes on a staging site, here is a good article to review.
/** * Dynamically display a user notice if stock is less than 3 * * @param array $data The variation autoship script data. * @param int $variation_id The WC Variation ID * @param WC_Product_Variation $product The WC Variation object * * @return array The filtered script data */ function xx_adjust_variation_autoship_data ( $data, $variation_id , $product ){ // Get the current stock if ( 'outofstock' !== $product->get_stock_status() ) return $data; // Check if a user is logged in. if ( is_user_logged_in() ){ $user = wp_get_current_user(); // If they have scheduled orders include the add to next order notice if ( autoship_customer_has_scheduled_orders ($user->ID) ){ $data['user_notice'] = sprintf( __("<p>Hey %s! This size is Out of Stock but if you add this size to your next scheduled order we'll be sure get it!<a href=\"/my-account/scheduled-orders/?action=add-to-scheduled-order&item=%d&qty=1&min=0&max=1\">ADD TO NEXT ORDER</a></p>", 'autoship' ), $user->user_firstname, $variation_id ); } } return $data; } add_filter( 'autoship_get_all_variation_cart_options', 'xx_adjust_variation_autoship_data', 10, 3 ); /** * Include Script to Display custom notice when it exists for Autoship Variation */ function xx_display_variation_notice(){ ?> <style>.user-notice {margin-top:10px; display:none;} .user-notice p {border:1px solid #ccc;padding:10px;color: #a11652;font-size:18px;} .user-notice p > a {font-weight: bold; background-color: #a11652;font-size: 15px;display:block;padding: 6px;border: 1px solid #a11652;border-radius: 5px;color: #fff;text-align: center;margin-top: 10px;} </style> <script> jQuery( function($) { $(document).ready( function() { // Add Element to Autoship Box $('<div class="user-notice"></div>').appendTo('.autoship-schedule-options-variable'); // When a Variation is selected check for notice and display if exists. $('body').on( 'found_variation', '.variations_form', function (event, variation){ var target = $('body').find('.user-notice'); target.html('').hide(); if ( autoship_variations_data && autoship_variations_data[variation.variation_id] && autoship_variations_data[variation.variation_id]['user_notice']){ target.html( autoship_variations_data[variation.variation_id]['user_notice'] ).fadeIn('slow'); } }); }); }); </script> <?php } add_action( 'wp_footer', 'xx_display_variation_notice' );