This probably isn’t useful for anyone but I’m currently using WooCommerce with WordPress and I needed a solution where a product item would automatically be added to cart on page load.
The code below is what I came up with, this code will also force the user to have only 1 quantity of the item.
To use, fill in the $product_id variable with your product id and paste the code in your child themes functions.php file.
add_action( 'wp_loaded', function() {
$product_id = 1;
if ( defined( 'WC_PLUGIN_FILE' ) ) {
if ( class_exists( 'WooCommerce' ) ) {
if ( ! function_exists( 'WC' ) ) {
$GLOBALS['woocommerce'] = WooCommerce::instance();
}
if ( method_exists( $GLOBALS['woocommerce']->cart, 'add_to_cart' ) ) {
$wc = $GLOBALS['woocommerce'];
$alreadyIn = false;
foreach ( $wc->cart->get_cart_contents() as $cartItem) {
// force user to only have 1 quantity
if ( $cartItem['product_id'] == $product_id && $cartItem['quantity'] > 1 ) {
$wc->cart->set_quantity( $cartItem['key'], 1 );
}
if ( $cartItem['product_id'] == $product_id ) {
$alreadyIn = true;
break;
}
}
if ( ! $alreadyIn ) {
$wc->cart->add_to_cart( $product_id, 1 );
}
}
}
}
}, 9999 );
