Autoship Cloud Dynamic Checkout Price Based on Selected Frequency

In this example, a developer adjusts the Autoship Checkout price based on the selected frequency of their Autoship Items. The result is a discounted Autoship Checkout Price in the Cart and Checkout being used for 3, 4, and 5 month frequencies for a specific product. 

Remember: always test new code on a staging site before adding it to your live site

Code:

<?php
/**
* Applies a custom checkout price to a specific product with a frequency type and number
* otherwise returns original checkout price.
* @param float  $checkout_price.  The current discounted or not checkout price for this autoship product.
* @param int    $product_id.      The current product's id.
* @param string $frequency_type.  The Autoship frequency type ( Months, Days, etc ).
* @param int    $frequency.       The frequency value.
*
* @return float. The new calculated checkout price or the originally supplied
*                                 
*/
function xx_dynamic_autoship_checkout_price( $checkout_price, $product_id, $frequency_type, $frequency ){

  // Simple example checks for if this is a special product id.
  if ( 9 == $product_id ){

    $product = wc_get_product( $product_id );
    $original_price = $product->get_price();

    // Generate a switch key.
    $key = $frequency_type . '-' . $frequency;
    $discounts = array(
      'Months-3' => .1,
      'Months-4' => .25,
      'Months-5' => .4,
    );

    // Easy case just check if this is a discounted combo
    // If so return new calculated checkout price.
    // If not return original checkout price.
    if ( isset( $discounts[$key] ) ) {

      return (int)( ( $original_price - ($original_price * $discounts[$key]) ) * 100 ) / 100;

    } else {

      return $checkout_price;

    }

  }

  return $checkout_price;

}
add_filter( 'autoship_checkout_price', 'xx_dynamic_autoship_checkout_price', 10, 4 );

Frequency: 4 Months Selected

Still need help? Contact Us Contact Us