WC_Shop_Customizer::add_checkout_section()publicWC 1.0

Checkout section.

Method of the class: WC_Shop_Customizer{}

No Hooks.

Return

null. Nothing (null).

Usage

$WC_Shop_Customizer = new WC_Shop_Customizer();
$WC_Shop_Customizer->add_checkout_section( $wp_customize );
$wp_customize(WP_Customize_Manager) (required)
Theme Customizer object.

WC_Shop_Customizer::add_checkout_section() code WC 9.4.2

public function add_checkout_section( $wp_customize ) {
	$wp_customize->add_section(
		'woocommerce_checkout',
		array(
			'title'       => __( 'Checkout', 'woocommerce' ),
			'priority'    => 20,
			'panel'       => 'woocommerce',
			'description' => __( 'These options let you change the appearance of the WooCommerce checkout.', 'woocommerce' ),
		)
	);

	// Checkout field controls.
	$fields = array(
		'company'   => __( 'Company name', 'woocommerce' ),
		'address_2' => __( 'Address line 2', 'woocommerce' ),
		'phone'     => __( 'Phone', 'woocommerce' ),
	);
	foreach ( $fields as $field => $label ) {
		$wp_customize->add_setting(
			'woocommerce_checkout_' . $field . '_field',
			array(
				'default'           => 'phone' === $field ? 'required' : 'optional',
				'type'              => 'option',
				'capability'        => 'manage_woocommerce',
				'sanitize_callback' => array( $this, 'sanitize_checkout_field_display' ),
			)
		);
		$wp_customize->add_control(
			'woocommerce_checkout_' . $field . '_field',
			array(
				/* Translators: %s field name. */
				'label'    => sprintf( __( '%s field', 'woocommerce' ), $label ),
				'section'  => 'woocommerce_checkout',
				'settings' => 'woocommerce_checkout_' . $field . '_field',
				'type'     => 'select',
				'choices'  => array(
					'hidden'   => __( 'Hidden', 'woocommerce' ),
					'optional' => __( 'Optional', 'woocommerce' ),
					'required' => __( 'Required', 'woocommerce' ),
				),
			)
		);
	}

	// Register settings.
	$wp_customize->add_setting(
		'woocommerce_checkout_highlight_required_fields',
		array(
			'default'              => 'yes',
			'type'                 => 'option',
			'capability'           => 'manage_woocommerce',
			'sanitize_callback'    => 'wc_bool_to_string',
			'sanitize_js_callback' => 'wc_string_to_bool',
		)
	);

	$wp_customize->add_setting(
		'woocommerce_checkout_terms_and_conditions_checkbox_text',
		array(
			/* translators: %s terms and conditions page name and link */
			'default'           => sprintf( __( 'I have read and agree to the website %s', 'woocommerce' ), '[terms]' ),
			'type'              => 'option',
			'capability'        => 'manage_woocommerce',
			'sanitize_callback' => 'wp_kses_post',
			'transport'         => 'postMessage',
		)
	);

	$wp_customize->add_setting(
		'woocommerce_checkout_privacy_policy_text',
		array(
			/* translators: %s privacy policy page name and link */
			'default'           => sprintf( __( 'Your personal data will be used to process your order, support your experience throughout this website, and for other purposes described in our %s.', 'woocommerce' ), '[privacy_policy]' ),
			'type'              => 'option',
			'capability'        => 'manage_woocommerce',
			'sanitize_callback' => 'wp_kses_post',
			'transport'         => 'postMessage',
		)
	);

	// Register controls.
	$wp_customize->add_control(
		'woocommerce_checkout_highlight_required_fields',
		array(
			'label'    => __( 'Highlight required fields with an asterisk', 'woocommerce' ),
			'section'  => 'woocommerce_checkout',
			'settings' => 'woocommerce_checkout_highlight_required_fields',
			'type'     => 'checkbox',
		)
	);

	if ( current_user_can( 'manage_privacy_options' ) ) {
		$choose_pages = array(
			'wp_page_for_privacy_policy' => __( 'Privacy policy', 'woocommerce' ),
			'woocommerce_terms_page_id'  => __( 'Terms and conditions', 'woocommerce' ),
		);
	} else {
		$choose_pages = array(
			'woocommerce_terms_page_id' => __( 'Terms and conditions', 'woocommerce' ),
		);
	}
	$pages        = get_pages(
		array(
			'post_type'   => 'page',
			'post_status' => 'publish,private,draft',
			'child_of'    => 0,
			'parent'      => -1,
			'exclude'     => array(
				wc_get_page_id( 'cart' ),
				wc_get_page_id( 'checkout' ),
				wc_get_page_id( 'myaccount' ),
			),
			'sort_order'  => 'asc',
			'sort_column' => 'post_title',
		)
	);
	$page_choices = array( '' => __( 'No page set', 'woocommerce' ) ) + array_combine( array_map( 'strval', wp_list_pluck( $pages, 'ID' ) ), wp_list_pluck( $pages, 'post_title' ) );

	foreach ( $choose_pages as $id => $name ) {
		$wp_customize->add_setting(
			$id,
			array(
				'default'    => '',
				'type'       => 'option',
				'capability' => 'manage_woocommerce',
			)
		);
		$wp_customize->add_control(
			$id,
			array(
				/* Translators: %s: page name. */
				'label'    => sprintf( __( '%s page', 'woocommerce' ), $name ),
				'section'  => 'woocommerce_checkout',
				'settings' => $id,
				'type'     => 'select',
				'choices'  => $page_choices,
			)
		);
	}

	$wp_customize->add_control(
		'woocommerce_checkout_privacy_policy_text',
		array(
			'label'           => __( 'Privacy policy', 'woocommerce' ),
			'description'     => __( 'Optionally add some text about your store privacy policy to show during checkout.', 'woocommerce' ),
			'section'         => 'woocommerce_checkout',
			'settings'        => 'woocommerce_checkout_privacy_policy_text',
			'active_callback' => array( $this, 'has_privacy_policy_page_id' ),
			'type'            => 'textarea',
		)
	);

	$wp_customize->add_control(
		'woocommerce_checkout_terms_and_conditions_checkbox_text',
		array(
			'label'           => __( 'Terms and conditions', 'woocommerce' ),
			'description'     => __( 'Optionally add some text for the terms checkbox that customers must accept.', 'woocommerce' ),
			'section'         => 'woocommerce_checkout',
			'settings'        => 'woocommerce_checkout_terms_and_conditions_checkbox_text',
			'active_callback' => array( $this, 'has_terms_and_conditions_page_id' ),
			'type'            => 'text',
		)
	);

	if ( isset( $wp_customize->selective_refresh ) ) {
		$wp_customize->selective_refresh->add_partial(
			'woocommerce_checkout_privacy_policy_text',
			array(
				'selector'            => '.woocommerce-privacy-policy-text',
				'container_inclusive' => true,
				'render_callback'     => 'wc_checkout_privacy_policy_text',
			)
		);
		$wp_customize->selective_refresh->add_partial(
			'woocommerce_checkout_terms_and_conditions_checkbox_text',
			array(
				'selector'            => '.woocommerce-terms-and-conditions-checkbox-text',
				'container_inclusive' => false,
				'render_callback'     => 'wc_terms_and_conditions_checkbox_text',
			)
		);
	}
}