Tempo di Lettura stimato: 2 minuti

Possiamo facilmente aggiungere campi personalizzati nostra tua pagina di pagamento in WooCommerce utilizzando il codice personalizzato , tuttavia ma nessuno di questi metodi ti consente di visualizzare questi campi in modo condizionale, in base ai prodotti nel carrello. Ecco come farlo.

L’idea qui è quella di ottenere il contenuto del carrello e caricare i campi di pagamento in base a ciò che ho nel carrello.
Il metodo get_cart () ci consente di recuperare il contenuto del carrello, quindi tutto ciò che dobbiamo fare è creare le condizioni.
Utilizzeremo una semplice dichiarazione if, ma è possibile creare un sistema più robusto, se necessario. Nel mio caso, sto verificando se nel carrello sono presenti prodotti con ID 2009 o 2010. In tal caso, viene aggiunto un nuovo campo per ciascun prodotto.
Fin qui tutto chiaro?

					

<?php // Do not include this if already open! Code goes in theme functions.php.
/**
 * Add fields to the checkout page based on products in cart.
 *
 * @how-to        https://remicorson.com/?p=7871
 * @author        Remi Corson
 * @testedwith    WooCommerce 3.4.0
 */
add_action( 'woocommerce_checkout_fields', 'woo_add_conditional_checkout_fields' );
function woo_add_conditional_checkout_fields( $fields ) {
	foreach( WC()->cart->get_cart() as $cart_item ){
	    $product_id = $cart_item['product_id'];
			if( $product_id == 2009 ) {
				$fields['billing']['billing_field_' . $product_id] = array(
					'label'     => __('Field for Product ' . $product_id, 'woocommerce'),
					'placeholder'   => _x('Field for Product ' . $product_id, 'placeholder', 'woocommerce'),
					'required'  => false,
					'class'     => array('form-row-wide'),
					'clear'     => true
				);
			}
			if( $product_id == 2010 ) {
				$fields['billing']['billing_field_' . $product_id] = array(
					'label'     => __('Field for Product ' . $product_id, 'woocommerce'),
					'placeholder'   => _x('Field for Product ' . $product_id, 'placeholder', 'woocommerce'),
					'required'  => false,
					'class'     => array('form-row-wide'),
					'clear'     => true
				);
			}
	}
	// Return checkout fields.
	return $fields;
}

Leggi Anche  Velocizziamo il nostro E-commerce (o il nostro blog) con il prefetching (guida 2020)