54
Interestingly enough, when you add a subscription product to the cart, there is no renewal date information unless you scroll to the very bottom and are able to read the very small text below the “recurring total” (see screenshot).
It would be way more helpful if dates (and specifically the WooCommerce subscription start date and end date) showed right under the product name inside the Cart table and in the Checkout page order review, so that the customer knows exactly what they are purchasing before having to figure that out.
So, here’s how it’s done. Enjoy!
PHP Snippet: Show Subscription Period @ WooCommerce Cart, Checkout, Thank You Page, View Order
/**
* @snippet Subscription Interval @ Cart & Checkout
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @testedwith WooCommerce 6
* @donate $9 https://tutoraspire.com
*/
// -----------------------------------------
// 1. Function to return subscription period
function tutoraspire_subscription_period_order_item_meta( $product, $order_date = '' ) {
if ( is_a( $product, 'WC_Product_Subscription' ) || is_a( $product, 'WC_Product_Subscription_Variation' ) ) {
if ( ! $order_date ) {
$order_date = date( 'M d' );
} else $order_date = date( 'M d', $order_date );
$period = WC_Subscriptions_Product::get_period( $product );
$interval = WC_Subscriptions_Product::get_interval( $product );
if ( date( 't', strtotime( $order_date ) ) == date( 'd', strtotime( $order_date ) ) || date( "m", strtotime( $order_date ) ) != date( "m", strtotime( $order_date ." +1 month" ) ) - 1 ) {
$end = date( 'M d Y', strtotime( '-1 day', strtotime( 'last day of ' . $interval . ' ' . $period, strtotime( $order_date ) ) ) );
} else {
$end = date( 'M d Y', strtotime( $interval . ' ' . $period . ' -1 day', strtotime( $order_date ) ) );
}
return 'Subscription period: ' . $order_date . ' - ' . $end . '
';
}
return '';
}
// -----------------------------------------
// 2. Display interval @ Cart, Checkout, Order
add_action( 'woocommerce_after_cart_item_name', 'tutoraspire_echo_subscription_period_cart_item_meta', 9999, 2 );
function tutoraspire_echo_subscription_period_cart_item_meta( $cart_item, $cart_item_key ) {
echo tutoraspire_subscription_period_order_item_meta( $cart_item['data'] );
}
add_filter( 'woocommerce_checkout_cart_item_quantity', 'tutoraspire_return_subscription_period_checkout_item_meta', 9999, 3 );
function tutoraspire_return_subscription_period_checkout_item_meta( $html, $cart_item, $cart_item_key ) {
return $html . tutoraspire_subscription_period_order_item_meta( $cart_item['data'] );
}
add_action( 'woocommerce_order_item_meta_start', 'tutoraspire_echo_subscription_period_order_item_meta', 9999, 4 );
function tutoraspire_echo_subscription_period_order_item_meta( $item_id, $item, $order, $bool ) {
$product = $item->get_product();
echo tutoraspire_subscription_period_order_item_meta( $product, strtotime( $order->get_date_completed() ) );
}