Home » WooCommerce Subscriptions: Display Start-End Dates @ Cart & Checkout

WooCommerce Subscriptions: Display Start-End Dates @ Cart & Checkout

by Tutor Aspire

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!

For this yearly subscription, I was able to display the subscription interval below the product name in the Cart. Snippet also displays it in the Checkout page and Thank you / View Order customer pages.

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() ) ); }

You may also like