Automattic\WooCommerce\Blocks\BlockTypes

ProductButton::is_product_purchasableprivateWC 1.0

Check if a product is purchasable.

Method of the class: ProductButton{}

No Hooks.

Returns

true|false. The product is purchasable.

Usage

// private - for code of main (parent) class only
$result = $this->is_product_purchasable( $product );
$product(WC_Product) (required)
The product.

ProductButton::is_product_purchasable() code WC 10.8.1

private function is_product_purchasable( $product ) {
	if ( $product->is_type( ProductType::GROUPED ) ) {
		$grouped_product_ids = $product->get_children();
		if ( ! empty( $grouped_product_ids ) ) {
			_prime_post_caches( $grouped_product_ids );
		}
		foreach ( $grouped_product_ids as $child ) {
			$child_product = wc_get_product( $child );
			if ( ! $child_product instanceof \WC_Product ) {
				continue;
			}
			if ( $child_product->is_purchasable() && $child_product->is_in_stock() ) {
				return true;
			}
		}

		return false;
	}

	return $product->is_purchasable() && $product->is_in_stock();
}