Automattic\WooCommerce\Blocks\BlockTypes
AddToCartForm::render()
Render the block.
Метод класса: AddToCartForm{}
Хуки из метода
Возвращает
Строку
. | void Rendered block output.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->render( $attributes, $content, $block );
- $attributes(массив) (обязательный)
- Block attributes.
- $content(строка) (обязательный)
- Block content.
- $block(WP_Block) (обязательный)
- Block instance.
Код AddToCartForm::render() AddToCartForm::render WC 9.7.1
protected function render( $attributes, $content, $block ) { global $product; $post_id = $block->context['postId']; if ( ! isset( $post_id ) ) { return ''; } $previous_product = $product; $product = wc_get_product( $post_id ); if ( ! $product instanceof \WC_Product ) { $product = $previous_product; return ''; } $is_external_product_with_url = $product instanceof \WC_Product_External && $product->get_product_url(); $is_stepper_style = 'stepper' === $attributes['quantitySelectorStyle'] && ! $product->is_sold_individually() && Features::is_enabled( 'add-to-cart-with-options-stepper-layout' ); ob_start(); /** * Trigger the single product add to cart action for each product type. * * @since 9.7.0 */ do_action( 'woocommerce_' . $product->get_type() . '_add_to_cart' ); $product_html = ob_get_clean(); if ( ! $product_html ) { $product = $previous_product; return ''; } $product_name = $product->get_name(); $product_html = $is_stepper_style ? $this->add_steppers( $product_html, $product_name ) : $product_html; $parsed_attributes = $this->parse_attributes( $attributes ); $is_descendent_of_single_product_block = $parsed_attributes['isDescendentOfSingleProductBlock']; if ( ! $is_external_product_with_url ) { $product_html = $this->add_is_descendent_of_single_product_block_hidden_input_to_product_form( $product_html, $is_descendent_of_single_product_block ); } $product_html = $is_stepper_style ? $this->add_stepper_classes_to_add_to_cart_form_input( $product_html ) : $product_html; $classes_and_styles = StyleAttributesUtils::get_classes_and_styles_by_attributes( $attributes, array(), array( 'extra_classes' ) ); $product_classname = $is_descendent_of_single_product_block ? 'product' : ''; $classes = implode( ' ', array_filter( array( 'wp-block-add-to-cart-form wc-block-add-to-cart-form', esc_attr( $classes_and_styles['classes'] ), esc_attr( $product_classname ), $is_stepper_style ? 'wc-block-add-to-cart-form--stepper' : 'wc-block-add-to-cart-form--input', ) ) ); $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes, 'style' => esc_attr( $classes_and_styles['styles'] ), ) ); $form = sprintf( '<div %1$s %2$s>%3$s</div>', $wrapper_attributes, $is_stepper_style ? 'data-wc-interactive=\'' . wp_json_encode( array( 'namespace' => 'woocommerce/add-to-cart-form', ), JSON_NUMERIC_CHECK | JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP ) . '\'' : '', $product_html ); $product = $previous_product; return $form; }