Quello che vorrei da WooCommerce

Che possiamo dire di WooCommerce: amato da molti ma odiato da tantissimi.

Bello e comodo per molte cose ma carente in diversi aspetti di usabilità.
Ricco di plugins che ne estendono le funzionalità ma davvero odioso nella modifica di alcuni comportamenti,

In ogni caso una delle poche soluzioni per mettere in piedi in ecommerce usando WordPress.

Nonostante alcuni temi aiutino a migliore un po’ l’usabilità sarebbe davvelo bello che alcune cose venissero integrate e gestite direttamente tra le opzioni base senza dover ogni volta fare copia e incolla di hook e/o installare plugins.

Qui ho fatto un piccolo elenco di quella che potremmo chiamare “lista dei desideri” e che anche se non usate proprio frequentemente mi risolverebbero un po’ di problemi e mi farebbero risparmiare tanto tempo.

Nel mentre vi dico come ho risolto e che “soluzioni” ho adottato in modo che anche per me sia comodo averle in un unico posto.

Nascondere le “spese di spedizione” se è attiva la spedizione gratuita.

Capita quasi sempre che in un Ecommerce, sopra un certo importo. la spedizione sia gratuita.
In quel caso non ha senso per l’utente vedere anche altre modalità di spedizione in modo da non portarlo erroneamente a scegliere l’opzione sbagliata e sopratutto agevolando la scelta .
Comportamento che mi sembra oltremodo logico ma che WooComerce non adotta.
Per risolvere ecco questo piccolo hook da mettere dentro functions.php (o dove preferita)

add_filter( 'woocommerce_package_rates', function ( $rates ){
	$free = array();
	foreach ( $rates as $rate_id => $rate ) {
		if ( 'free_shipping' === $rate->method_id ) {
			$free[ $rate_id ] = $rate;
			break;
		}
	}
	return ! empty( $free ) ? $free : $rates;
}, 100 );

Aggiungere un messaggio nella pagina di cheeckout

WooCommerce tra le sue opzioni, permette l’aggiunta di un messaggio presente su tutto il sito.
Meraviglioso. Peccato che tantissime volte mi è stato chiesto di aggiungerlo solo nella pagina del pagamento (checkout) e/o in quella del carrello.
Necessita relativa a qualche promozione e/o alle modalità di spedizione che non ha senso avere su tutte le pagine.

Anche in questo caso, pur essendoci hook pensati proprio per questo, non esiste la possibilità di farlo direttamente dalla opzioni rendendo impossabile per clinte XYZ avere autonomia su una cosa così banale.

Questa la mia soluzione: le righe di codice sono pochissime e se cercate vi sono anche altri hook per metterlo in posizioni diverse. Come per quello prima copia e incolla dentro functions.php

add_action( 'woocommerce_before_checkout_form', function () {
  echo '<div class="help">Lorem Ipsum</div>';
}, 5 );

Maggiore personalizzazione delle email

Anche se nelle opzioni è indicato il percorso del template usato a volte la pigrizia è tanta e copiare tutto dentro il tema usato per poi modificarlo è faticoso.
Vero che abbiamo la possibilità di impostare logo e footer a livello globale insieme a qualche altra opzione dentro ogni mail ma nulla per poter modificare il layout.

Diciamo che sarebbe bello poter dare ai propri clienti un piccolo editor in stile Gutenberg o almeno la scelta tra 2/3 tipi di layout.


In attesa di trovare una soluzione migliore, in questo caso, per risolvere il problema uso un plugin che tramite il customizer permette e me ed al cliente un po più di controllo.
Il suo nome è Kadence WooCommerce Email Designer

Disattivare il carrello e passare direttamente al checkout

Per i negozi che vendono un solo prodotto o servizio, secondo il mio parere (ma anche quelo di alcuni esperti), il carrello risulta un passagio inutile perchè allunga inutilmente il numero di click.
Se è la conversione che stiamo cercando allora meglio andare direttamente al checkout e sperare che tutto funzioni per arrivare alla conversione.

Invece no. WooComerce ti permette di andare dal prodotto al carrello, ma non dal prodotto al checkout.

Anche in questo caso per chi non ha paura di fare copia e incolla ecco un semplice frammento da mettere sempre dentro functions.php

add_action( 'template_redirect', function () {
	if ( is_cart() && WC()->cart->cart_contents_count > 0 ) {
			wp_redirect( wc_get_checkout_url(), );		
             exit;
		}	
	}
        return;
}, 1);

Aggiungere il codice fiscale (e partita iva)

Questo è il fix che mi tocca fare SEMPRE.
Qui in italia la normativa fiscale ci impone la richiesta del Codice Fiscale e/o della partita iva ma WooCommerce non ha ancora recepito questa necessità, ne ci da la possibilità di aggiungere “agevolmente” questi campi nella pagina checkout

Ci si deve ogni volta arrangiare con uno dei tanti plugins o aggiungendo due righe di codice.
Questo per visualizzare il campo a frontend:


add_filter('woocommerce_billing_fields', function ($fields){
	
	$fields['billing_fiscal_code'] = array(
		'label' => __('Codice Fiscale'), // Add custom field label
		'placeholder' => _x('Codice Fiscale', 'placeholder'), 
		'required' => true, // if field is required or not
		'clear' => false, // add clear or not
		'type' => 'text', // add field type
		'class' => array(),    // add class name
		'priority' => 3
	);

	return $fields;
});

Questo invece per vederle nel dettaglio ordine in amministrazione

add_action('woocommerce_admin_order_data_after_billing_address', function ($order) {
	$billing_fields = array(
		'billing_fiscal_code' => __('Codice Fiscale'),
	);

	foreach ($billing_fields as $name => $label) :
		$row[$name] = ('' != $order->__get($name)) ? $order->__get($name) : 'n/d';
		echo '<strong>' . $label . ':</strong> ' . $row[$name] . '<br/>';
	endforeach;
}, 10, 1);

Gestire il numeratore degli ordini con un contatore separato

Ogni ordine deve giustamente avere un numero “univocoprogressivo.
Informazione necessaria per poterlo distinguere con assoluta certezza e per avere anche una progressione lineare e capire quale ordine è arrivato prima.

Quello che non mi piace è che di base viene usato l’identificativo della riga (POST ID) e nell’uso quotidiano ci si ritrova con dei buchi da un’ordine all’altro dovuti al fatto che si è pubblicata una nuova pagina o un nuovo articolo.

Creare un contatore separato secondo me è la cosa migliore e il motivo per cui non sia ancora stato inserito nel core è per me un mistero…

In questo caso le righe di codice da copiare serabbero tantine e visto che non sempre ha senso reinvetare la ruota ho deciso di affidarmi ad un plugin già pronto e cha bene il suo compito.

Questo quello che ho scelto io: Custom Order Numbers per WooCommerce

Aggiungere anteprima prodotti nel Checkout

Il box con il riepilogo ordine che troviamo nella pagina di checkout a volte è poco “intuitivo” per capire cosa si sta acquistando. Ancora di più quando ci sono prodotti con varianti.

Aggiungere una piccola anteprima del prodotto può aiutare molto, ma questo WooCommerce ha deciso di farlo solo nella pagina di carrello.

Soluzione: copia ed incolla di questo frammento nel file funcions.php

// reference:  https://njengah.com/add-product-image-woocommerce-checkout-page/

add_filter( 'woocommerce_cart_item_name', function ( $name, $cart_item, $cart_item_key ) {  

    /* Return if not checkout page */
    if ( ! is_checkout() ) {
        return $name;
    }

    /* Get product object */
    $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );

    /* Get product thumbnail */
    $thumbnail = $_product->get_image();

    $image = '<div style="width: 52px; height: 45px; display: inline-block; padding-right: 7px; vertical-align: middle;">'
                . $thumbnail .
            '</div>';

    /* Prepend image to name and return it */
    return $image . $name;

}, 10, 3 );

Spero sia utile anche a chi è arrivato sino qui in fondo e se trovate errori o refusi scrivetemi cosi correggo.
Inoltre se pensi ci siano altre cose che fai ogni volta che metti su un ecommerce con WooComerce e vuoi condividere soluzioni pratiche e veloci sarò felice di aggionare questo post.

Leave a Reply

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.