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