Home

Aggiungi regalo nel carrello woocommerce con minimo d’ordine senza plugin

Prendo spunto da un articolo che ho trovato qualche giorno fa che permette di aggiungere al carrello un prodotto al raggiungimento di un importo del carrello.

La funzionalità si attiva facilmente inserendo del codice all’interno del file functions.php

L’articolo è il seguente: https://interno15.it/blog/come-aggiungere-un-prodotto-in-regalo-nel-carrello-di-woocommerce-al-raggiungimento-di-un-importo-senza-acquistare-plugin

Ho voluto però fare una piccola modifica che mi permette di controllare le variabili dentro wooocommerce una volta inserito il codice senza necessariamente entrare e modificare il file functions.php

Cosa di deve fare:

  • aggiungere il codice così come indicato dall’articolo di interno15.it
  • aggiungere il codice che permette di gestire le variabili: ID prodotto, Importo Minimo Carrello, Escludi/Includi spese di spedizione nel calcolo(PUNTO 2). Le variabili saranno visibili all’interno delle impostazioni woocoommerce -> prodotti -> regalo nel carrello
  • sostituire 3 righe di codice con le variabili create (PUNTO 3)

Punto 2

add_filter( 'woocommerce_get_sections_products' , 'gift_settings_tab' );

function gift_settings_tab( $settings_tab ){
     $settings_tab['gift_btn'] = __( 'Regalo nel carrello' );
     return $settings_tab;
}

add_filter( 'woocommerce_get_settings_products' , 'gift_get_settings' , 10, 2 );

function gift_get_settings( $settings, $current_section ) {
        $custom_settings = array();

        if( 'gift_btn' == $current_section ) {
	
			$custom_settings =  array(

			array(
				'name' => __( 'Regalo nel carrello' ),
				'type' => 'title',
				'desc' => __( 'Sezione personalizzata per un regalo nel carrello<hr/>' ),
				'id'   => 'gift_btn_id' 
			),

			array(
				'name' => __( 'Opzione attiva' ),
				'type' => 'checkbox',
				'desc' => __( 'Attiva'),
				'id'	=> 'enable_btn_gift'
			),
			
			array(
				'name' => __( 'ID Prodotto' ),
				'type' => 'text',
				'desc' => 'Prodotto che sarà aggiunto nel carrello',
				'id'	=> 'id_product_to_gift'
			),
			array(
				'name' => __( 'Totale carrello minimo' ),
				'type' => 'text',
				'desc' => 'Importo minimo che deve essere il carrello per aggiungere il regalo',
				'id'	=> 'cart_value_product_to_gift'
			),

			array(
				'name' => __( '' ),
				'type' => 'checkbox',
				'desc' => __( 'escludi dal totale carrello minimo le spese di spedizione'),
				'id'	=> 'exlude_shopping_cost_for_gift'
			),
			
			array( 'type' => 'sectionend', 'id' => 'gift_btn_id' ),

			);	
				
		return $custom_settings;
     } else {
        	return $settings;
    }

}

Punto 3


$product_gifted_id = 0;
//diventa
$product_gifted_id =get_option( 'id_product_to_gift' );


$price_limit = 80;
//diventa
$price_limit =floatval(get_option( 'cart_value_product_to_gift' ));


$total_with_delivery = false/true;
//diventa

if (get_option( 'exlude_shopping_cost_for_gift' )=='no') 
$total_with_delivery = false;
else
$total_with_delivery = true;

La variabile “attiva regalo” si può gestire in due modi:
– non facendo nessuna operazione (quindi se è nel carrello il regalo non lo toglie)
– se non attiva rimuovi il regalo dal carrello (nel caso che il prodotto destinato a regalo sia usato sempre e solo come regalo)

Se fosse per esempio il caso 2 aggiungere nel codice dopo la stringa di controllo carrello vuoto il seguente codice:

if (get_option( 'enable_btn_gift' )=='no') {
WC()->cart->remove_cart_item( $product_gifted_id ); //commentare questa riga se non volete che venga rimosso il prodotto dal carrello
return;
}

Disattivare rest API elenco utenti

Ecco il codice da inserire all’interno del functions.php del vostro tema wordpress per disattivare l’accesso all’elenco degli utenti o l’accesso alle informazioni di un utente tramite la chiamata REST API di wordpress.
Questo per aumentare la sicurezza del vostro sito web.

add_filter( 'rest_endpoints', function( $endpoints ){
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
        unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
    }
    return $endpoints;
});

Questo invece (SCELTA CONSIGLIATA) per disattivare le REST API agli utenti non autenticati:

add_filter( 'rest_authentication_errors', function( $result ) { 
if ( ! empty( $result ) ) { return $result; } 
if ( ! is_user_logged_in() ) { 
         return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) ); 
} 
return $result; 
});

se invece volete disattivare completamente tutte le REST API inserire questo:

add_filter( 'rest_authentication_errors', 'wp_snippet_disable_rest_api' );
function wp_snippet_disable_rest_api( $access ) {
     return new WP_Error( 'rest_disabled', __('The WordPress REST API has been disabled.'), array( 'status' => rest_authorization_required_code()));
}
©2021 AGANIS WEB SOFTWARE di Francesca Roccabruna P.IVA TRENTO 02183500228 - N.REA 205930 La Web Agency per la realizzazione del tuo sito web
Privacy Policy