Automattic\WooCommerce\Blocks\BlockTypes

AbstractProductGrid::get_add_to_cart()protectedWC 1.0

Get the "add to cart" button.

Method of the class: AbstractProductGrid{}

Return

String. Rendered product output.

Usage

// protected - for code of main (parent) or child class
$result = $this->get_add_to_cart( $product );
$product(\WC_Product) (required)
Product.

AbstractProductGrid::get_add_to_cart() code WC 9.4.2

protected function get_add_to_cart( $product ) {
	$attributes = array(
		'aria-label'       => $product->add_to_cart_description(),
		'data-quantity'    => '1',
		'data-product_id'  => $product->get_id(),
		'data-product_sku' => $product->get_sku(),
		'data-price'       => wc_get_price_to_display( $product ),
		'rel'              => 'nofollow',
		'class'            => 'wp-block-button__link ' . ( function_exists( 'wc_wp_theme_get_element_class_name' ) ? wc_wp_theme_get_element_class_name( 'button' ) : '' ) . ' add_to_cart_button',
	);

	if (
		$product->supports( 'ajax_add_to_cart' ) &&
		$product->is_purchasable() &&
		( $product->is_in_stock() || $product->backorders_allowed() )
	) {
		$attributes['class'] .= ' ajax_add_to_cart';
	}

	/**
	 * Filter to manipulate (add/modify/remove) attributes in the HTML code of the generated add to cart button.
	 *
	 * @since 8.6.0
	 *
	 * @param array      $attributes An associative array containing default HTML attributes of the add to cart button.
	 * @param WC_Product $product    The WC_Product instance of the product that will be added to the cart once the button is pressed.
	 *
	 * @return array Returns an associative array derived from the default array passed as an argument and added the extra HTML attributes.
	 */
	$attributes = apply_filters( 'woocommerce_blocks_product_grid_add_to_cart_attributes', $attributes, $product );

	return sprintf(
		'<a href="%s" %s>%s</a>',
		esc_url( $product->add_to_cart_url() ),
		wc_implode_html_attributes( $attributes ),
		esc_html( $product->add_to_cart_text() )
	);
}