WooCommerce – Add all upsells of a product to the cart via custom link

·

<?php // Do not include this if already open!

/**
* Code goes in theme functions.php.
* Product must have upsells, and this works with simple products only.
* Example link: yoursite.com?add-upsells-to-cart=X, X being your product ID.
*/
add_action( 'wp_loaded', 'bulk_upsell_add_to_cart_action', 20 );

function bulk_upsell_add_to_cart_action() {
	if ( ! empty( $_GET['add-upsells-to-cart'] ) ) {
		$product_id = absint( $_GET['add-upsells-to-cart'] );
		$product = wc_get_product( $product_id );

		if ( $product ) {
			$upsell_ids = $product->get_upsells();

			if ( $upsell_ids ) {
				$count = 0;

				foreach ( $upsell_ids as $upsell_id ) {
					if ( WC()->cart->add_to_cart( $upsell_id ) ) {
						$count ++;
					}
				}

				wc_add_notice( sprintf( _n( 'Added %d item to the cart', 'Added %d items to the cart', $count ), $count ) );
			}
		}
	}
}