Automattic\WooCommerce\Internal\Features\ProductBlockEditor\ProductTemplates

SimpleProductTemplate::add_general_group_blocks()privateWC 1.0

Adds the general group blocks to the template.

Метод класса: SimpleProductTemplate{}

Хуков нет.

Возвращает

null. Ничего (null).

Использование

// private - только в коде основоного (родительского) класса
$result = $this->add_general_group_blocks();

Код SimpleProductTemplate::add_general_group_blocks() WC 9.4.2

private function add_general_group_blocks() {
	$is_calc_taxes_enabled = wc_tax_enabled();
	$general_group         = $this->get_group_by_id( $this::GROUP_IDS['GENERAL'] );
	$general_group->add_block(
		array(
			'id'         => 'product_variation_notice_general_tab',
			'blockName'  => 'woocommerce/product-has-variations-notice',
			'order'      => 10,
			'attributes' => array(
				'content'    => __( 'This product has options, such as size or color. You can manage each variation\'s images, downloads, and other details individually.', 'woocommerce' ),
				'buttonText' => __( 'Go to Variations', 'woocommerce' ),
				'type'       => 'info',
			),
		)
	);
	// Basic Details Section.
	$basic_details = $general_group->add_section(
		array(
			'id'         => 'basic-details',
			'order'      => 10,
			'attributes' => array(
				'title'       => __( 'Basic details', 'woocommerce' ),
				'description' => __( 'This info will be displayed on the product page, category pages, social media, and search results.', 'woocommerce' ),
			),
		)
	);
	$basic_details->add_block(
		array(
			'id'        => 'product-details-section-description',
			'blockName' => 'woocommerce/product-details-section-description',
			'order'     => 10,
		)
	);
	$basic_details->add_block(
		array(
			'id'         => 'product-name',
			'blockName'  => 'woocommerce/product-name-field',
			'order'      => 10,
			'attributes' => array(
				'name'      => 'Product name',
				'autoFocus' => true,
				'metadata'  => array(
					'bindings' => array(
						'value' => array(
							'source' => 'woocommerce/entity-product',
							'args'   => array(
								'prop' => 'name',
							),
						),
					),
				),
			),
		)
	);

	// Product Pricing columns.
	$pricing_columns  = $basic_details->add_block(
		array(
			'id'        => 'product-pricing-group-pricing-columns',
			'blockName' => 'core/columns',
			'order'     => 10,
		)
	);
	$pricing_column_1 = $pricing_columns->add_block(
		array(
			'id'         => 'product-pricing-group-pricing-column-1',
			'blockName'  => 'core/column',
			'order'      => 10,
			'attributes' => array(
				'templateLock' => 'all',
			),
		)
	);
	$pricing_column_1->add_block(
		array(
			'id'                => 'product-pricing-regular-price',
			'blockName'         => 'woocommerce/product-regular-price-field',
			'order'             => 10,
			'attributes'        => array(
				'name'  => 'regular_price',
				'label' => __( 'Regular price', 'woocommerce' ),
				'help'  => $is_calc_taxes_enabled ? null : sprintf(
				/* translators: %1$s: store settings link opening tag. %2$s: store settings link closing tag.*/
					__( 'Per your %1$sstore settings%2$s, taxes are not enabled.', 'woocommerce' ),
					'<a href="' . admin_url( 'admin.php?page=wc-settings&tab=general' ) . '" target="_blank" rel="noreferrer">',
					'</a>'
				),
			),
			'disableConditions' => array(
				array(
					'expression' => 'editedProduct.type === "variable"',
				),
			),
		)
	);
	$pricing_column_2 = $pricing_columns->add_block(
		array(
			'id'         => 'product-pricing-group-pricing-column-2',
			'blockName'  => 'core/column',
			'order'      => 20,
			'attributes' => array(
				'templateLock' => 'all',
			),
		)
	);
	$pricing_column_2->add_block(
		array(
			'id'                => 'product-pricing-sale-price',
			'blockName'         => 'woocommerce/product-sale-price-field',
			'order'             => 10,
			'attributes'        => array(
				'label' => __( 'Sale price', 'woocommerce' ),
			),
			'disableConditions' => array(
				array(
					'expression' => 'editedProduct.type === "variable"',
				),
			),
		)
	);
	$basic_details->add_block(
		array(
			'id'        => 'product-pricing-schedule-sale-fields',
			'blockName' => 'woocommerce/product-schedule-sale-fields',
			'order'     => 20,
		)
	);

	if ( $is_calc_taxes_enabled ) {
		$basic_details->add_block(
			array(
				'id'         => 'product-sale-tax',
				'blockName'  => 'woocommerce/product-radio-field',
				'order'      => 30,
				'attributes' => array(
					'title'    => __( 'Charge sales tax on', 'woocommerce' ),
					'property' => 'tax_status',
					'options'  => array(
						array(
							'label' => __( 'Product and shipping', 'woocommerce' ),
							'value' => 'taxable',
						),
						array(
							'label' => __( 'Only shipping', 'woocommerce' ),
							'value' => 'shipping',
						),
						array(
							'label' => __( "Don't charge tax", 'woocommerce' ),
							'value' => 'none',
						),
					),
				),
			)
		);
		$pricing_advanced_block = $basic_details->add_block(
			array(
				'id'         => 'product-pricing-advanced',
				'blockName'  => 'woocommerce/product-collapsible',
				'order'      => 40,
				'attributes' => array(
					'toggleText'       => __( 'Advanced', 'woocommerce' ),
					'initialCollapsed' => true,
					'persistRender'    => true,
				),
			)
		);
		$pricing_advanced_block->add_block(
			array(
				'id'         => 'product-tax-class',
				'blockName'  => 'woocommerce/product-select-field',
				'order'      => 10,
				'attributes' => array(
					'label'    => __( 'Tax class', 'woocommerce' ),
					'help'     => sprintf(
					/* translators: %1$s: Learn more link opening tag. %2$s: Learn more link closing tag.*/
						__( 'Apply a tax rate if this product qualifies for tax reduction or exemption. %1$sLearn more%2$s', 'woocommerce' ),
						'<a href="https://woocommerce.com/document/setting-up-taxes-in-woocommerce/#shipping-tax-class" target="_blank" rel="noreferrer">',
						'</a>'
					),
					'property' => 'tax_class',
					'options'  => self::get_tax_classes(),
				),
			)
		);
	}

	$basic_details->add_block(
		array(
			'id'         => 'product-summary',
			'blockName'  => 'woocommerce/product-text-area-field',
			'order'      => 50,
			'attributes' => array(
				'label'    => __( 'Summary', 'woocommerce' ),
				'help'     => __(
					"Summarize this product in 1-2 short sentences. We'll show it at the top of the page.",
					'woocommerce'
				),
				'property' => 'short_description',
			),
		)
	);

	// Description section.
	$description_section = $general_group->add_section(
		array(
			'id'         => 'product-description-section',
			'order'      => 20,
			'attributes' => array(
				'title'       => __( 'Description', 'woocommerce' ),
				'description' => __( 'What makes this product unique? What are its most important features? Enrich the product page by adding rich content using blocks.', 'woocommerce' ),
			),
		)
	);

	$description_field_block = $description_section->add_block(
		array(
			'id'        => 'product-description',
			'blockName' => 'woocommerce/product-description-field',
			'order'     => 10,
		)
	);

	$description_field_block->add_block(
		array(
			'id'         => 'product-description__content',
			'blockName'  => 'woocommerce/product-summary-field',
			'order'      => 10,
			'attributes' => array(
				'helpText' => null,
				'label'    => null,
				'property' => 'description',
			),
		)
	);

	// External/Affiliate section.
	$buy_button_section = $general_group->add_section(
		array(
			'id'             => 'product-buy-button-section',
			'order'          => 30,
			'attributes'     => array(
				'title'       => __( 'Buy button', 'woocommerce' ),
				'description' => __( 'Add a link and choose a label for the button linked to a product sold elsewhere.', 'woocommerce' ),
			),
			'hideConditions' => array(
				array(
					'expression' => 'editedProduct.type !== "external"',
				),
			),
		)
	);

	$buy_button_section->add_block(
		array(
			'id'         => 'product-external-url',
			'blockName'  => 'woocommerce/product-text-field',
			'order'      => 10,
			'attributes' => array(
				'property'    => 'external_url',
				'label'       => __( 'Link to the external product', 'woocommerce' ),
				'placeholder' => __( 'Enter the external URL to the product', 'woocommerce' ),
				'suffix'      => true,
				'type'        => array(
					'value'   => 'url',
					'message' => __( 'Link to the external product is an invalid URL.', 'woocommerce' ),
				),
			),
		)
	);

	$button_text_columns = $buy_button_section->add_block(
		array(
			'id'        => 'product-button-text-columns',
			'blockName' => 'core/columns',
			'order'     => 20,
		)
	);

	$button_text_columns->add_block(
		array(
			'id'        => 'product-button-text-column1',
			'blockName' => 'core/column',
			'order'     => 10,
		)
	)->add_block(
		array(
			'id'         => 'product-button-text',
			'blockName'  => 'woocommerce/product-text-field',
			'order'      => 10,
			'attributes' => array(
				'property' => 'button_text',
				'label'    => __( 'Buy button text', 'woocommerce' ),
			),
		)
	);

	$button_text_columns->add_block(
		array(
			'id'        => 'product-button-text-column2',
			'blockName' => 'core/column',
			'order'     => 20,
		)
	);

	// Product list section.
	$product_list_section = $general_group->add_section(
		array(
			'id'             => 'product-list-section',
			'order'          => 35,
			'attributes'     => array(
				'title'       => __( 'Products in this group', 'woocommerce' ),
				'description' => __( 'Make a collection of related products, enabling customers to purchase multiple items together.', 'woocommerce' ),
			),
			'hideConditions' => array(
				array(
					'expression' => 'editedProduct.type !== "grouped"',
				),
			),
		)
	);

	$product_list_section->add_block(
		array(
			'id'         => 'product-list',
			'blockName'  => 'woocommerce/product-list-field',
			'order'      => 10,
			'attributes' => array(
				'property' => 'grouped_products',
			),
		)
	);

	// Images section.
	$images_section = $general_group->add_section(
		array(
			'id'         => 'product-images-section',
			'order'      => 40,
			'attributes' => array(
				'title'       => __( 'Images', 'woocommerce' ),
				'description' => sprintf(
				/* translators: %1$s: Images guide link opening tag. %2$s: Images guide link closing tag. */
					__( 'Drag images, upload new ones or select files from your library. For best results, use JPEG files that are 1000 by 1000 pixels or larger. %1$sHow to prepare images?%2$s', 'woocommerce' ),
					'<a href="https://woocommerce.com/posts/how-to-take-professional-product-photos-top-tips" target="_blank" rel="noreferrer">',
					'</a>'
				),
			),
		)
	);
	$images_section->add_block(
		array(
			'id'         => 'product-images',
			'blockName'  => 'woocommerce/product-images-field',
			'order'      => 10,
			'attributes' => array(
				'images'   => array(),
				'property' => 'images',
			),
		)
	);

	// Downloads section.
	$this->add_downloadable_product_blocks( $general_group );
}