autoship_get_all_variation_cart_options(filter)

(src > cart.php) Allows You to filter the Autoship values for each variation on the Add To Cart in the Product Screens. The filter takes the WC Product for the variation and the variation id.

Example

/**
 * 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' );

Still need help? Contact Us Contact Us