PerchÊ un plugin di Fidelizzazione? Nel mio shop offro consulenze, e la consulenza è una relazione che cresce e si arricchisce nel tempo, man mano che la conoscenza reciproca diventa piÚ profonda. In altre parole, è piÚ semplice lavorare con un cliente che già conosco, poichÊ ho sviluppato una comprensione piÚ completa della sua azienda, del servizio o del prodotto. Di conseguenza, posso dire che il costo di una consulenza si abbassa per me, grazie alla familiarità acquisita nel tempo. Lo stesso vale per il cliente, che beneficia di una consulenza sempre piÚ mirata e personalizzata.
Ma come incentivare questa relazione continua e proficua? Ho pensato di creare un sistema che premi la fedeltĂ , per dare un valore aggiunto a queste interazioni che si sviluppano nel tempo.
Come sai, non sono un fan dei plugin che appesantiscono il sito, preferisco lavorare direttamente sul codice per mantenere alte le performance. Inoltre, uno degli obiettivi principali di questo sito è offrire spunti pratici e tecnici per la gestione di un sito web.
Per questo motivo, ho deciso di sviluppare il plugin Red-Fidelity: l’ho creato con lâintenzione di condividerlo con te, ma anche di spiegarti come funziona, in modo che tu possa comprenderne la logica e, se necessario, personalizzarlo per adattarlo meglio alle tue esigenze. Il plugin è giĂ pronto all’uso, ma ti offro anche l’opportunitĂ di modificarlo e migliorarlo in futuro, costruendo qualcosa di unico per il tuo business.
Il plugin è attivo su questo sito, quindi ogni acquisto ti sarà diritto a punti fedeltà da usare per i tuoi futuri acquisti.
Vuoi provarlo? Acquista la prima consulenza di benvenuto a 15âŹ, ricevi 15 punti ed un coupon da 15âŹ.
Indice dei contenuti
FunzionalitĂ Principali del Plugin di Fidelizzazione Red-Fidelity
Red-Fidelity è progettato per offrire la gestione dei punti fedeltà , con una serie di funzionalità pensate per essere facilmente personalizzabili e integrabili nel tuo negozio online. Ecco cosa puoi fare con il plugin:
1. Gestione dei Punti FedeltĂ
Ogni utente che effettua un acquisto nel tuo negozio accumula punti fedeltà . Questi punti possono essere utilizzati come sconto sui futuri acquisti. Il sistema di calcolo è completamente personalizzabile, permettendo di impostare:
- Tasso di conversione: quanti punti vengono guadagnati per ogni unitĂ di valuta spesa.
- Valore di un punto: quanto vale ogni punto in termini di sconto.
- Punti massimi utilizzabili: il numero massimo di punti che un cliente può utilizzare in un singolo ordine.
2. Applicazione dello Sconto con i Punti
Quando un cliente aggiunge prodotti al carrello, il sistema verifica quanti punti sono disponibili per lui. Lo sconto viene calcolato in base ai punti accumulati e applicato automaticamente al carrello. Lâutente può vedere un riepilogo dei punti utilizzati e dello sconto applicato durante il checkout.
3. Aggiornamento dei Punti al Completamento dellâOrdine
Quando un ordine viene completato, i punti vengono aggiornati automaticamente. Il sistema aggiunge nuovi punti in base al totale dell’ordine e sottrae i punti utilizzati durante il pagamento. Il saldo dei punti fedeltà è quindi sempre aggiornato.
4. Visualizzazione dei Punti nella Dashboard e nell’Area Admin
- Per gli utenti: Nella dashboard dellâaccount, i clienti possono vedere quanti punti hanno accumulato e il loro valore. Questo offre una trasparenza totale e incoraggia gli utenti a tornare.
- Per gli amministratori: Gli amministratori possono visualizzare i punti fedeltĂ degli utenti direttamente dalla lista utenti di WordPress, grazie a una colonna apposita che mostra il saldo dei punti di ciascun cliente.
5. Pannello di Configurazione nel Back Office
Lâamministratore può configurare facilmente tutte le impostazioni relative al programma di fidelizzazione dal back office di WordPress:
- Impostare il numero massimo di punti utilizzabili per ordine.
- Definire la conversione tra punti e valore monetario.
- Gestire il tasso di guadagno dei punti in base allâimporto dellâordine.

Struttura del Plugin
Il plugin Red-Fidelity è composto da diversi file, ciascuno con una responsabilità specifica.
Alberatura dei file
red-fidelity/
â
âââ assets/
â âââ style.css # Stile frontend
â âââ script.js # Eventuali funzioni
â âââ admin-style.css # Stile backoffice
â
âââ includes/ # File PHP
â âââ settings.php # Impostazioni del plugin
â âââ points-system.php # Gestione dei punti
â
âââ pods.json # Campo Pods con i punti
âââ red-fidelity.php # File che carica tutto
âââ index.php
Ecco unâanalisi dei file principali:
1. red-fidelity.php
Questo è il file principale che gestisce l’integrazione tra WooCommerce, Pods e il resto del sistema. Controlla se i plugin WooCommerce e Pods sono attivi e li carica se necessario. Inoltre, gestisce il caricamento dei file CSS e JS per l’interfaccia utente.
Mostra il codice
<?php
/**
* Plugin Name: Red-Fidelity
* Description: Plugin per la gestione di un programma fedeltĂ con WooCommerce e Pods.
* Version: 1.0.0
* Author: devInRed
* Author URI: https://devinred.com
* License: GPL2
*/
if (!defined('ABSPATH')) {
exit; // Evita accessi diretti
}
// Verifica se WooCommerce è attivo
if ( !in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
add_action('admin_notices', function() {
echo '<div class="error"><p>Il plugin WooCommerce non è installato o attivo. Red-Fidelity richiede WooCommerce per funzionare correttamente.</p></div>';
});
return;
}
// Verifica se Pods è attivo
if (!class_exists('Pods')) {
add_action('admin_notices', function() {
echo '<div class="error"><p>Il plugin Pods non è installato o attivo. Red-Fidelity richiede Pods per funzionare correttamente.</p></div>';
});
return;
}
// Inclusione dei file principali
include_once plugin_dir_path(__FILE__) . 'includes/settings.php';
include_once plugin_dir_path(__FILE__) . 'includes/points-system.php';
// Caricamento CSS e JS
add_action('wp_enqueue_scripts', function() {
wp_enqueue_style('red-fidelity-style', plugins_url('assets/style.css', __FILE__));
wp_enqueue_script('red-fidelity-script', plugins_url('assets/script.js', __FILE__), ['jquery'], false, true);
});
function load_admin_scripts($hook) {
if ('settings_page_red-fidelity-settings' === $hook) {
// Carica il tuo CSS nell'admin
wp_enqueue_style('my-admin-style', plugin_dir_url(__FILE__) . 'assets/admin-style.css');
}
}
add_action('admin_enqueue_scripts', 'load_admin_scripts');
2. includes/settings.php
Qui sono definite tutte le opzioni di configurazione del plugin, che possono essere facilmente gestite attraverso lâinterfaccia di amministrazione di WordPress. Lâamministratore può personalizzare i parametri come il tasso di conversione dei punti, il valore di ciascun punto e il numero massimo di punti utilizzabili per ordine.
Mostra il codice
<?php
add_action('admin_menu', function () {
add_options_page('Red Fidelity Settings', 'Red Fidelity', 'manage_options', 'red-fidelity-settings', 'red_fidelity_settings_page');
});
function red_fidelity_settings_page()
{
if (isset($_POST['red_fidelity_max_points']) && isset($_POST['red_fidelity_conversion_rate']) && isset($_POST['red_fidelity_point_value'])) {
update_option('red_fidelity_max_points', intval($_POST['red_fidelity_max_points']));
update_option('red_fidelity_conversion_rate', intval($_POST['red_fidelity_conversion_rate']));
update_option('red_fidelity_point_value', floatval($_POST['red_fidelity_point_value']));
echo '<div class="updated"><p>Impostazioni salvate.</p></div>';
}
$max_points = get_option('red_fidelity_max_points', 100);
$conversion_rate = get_option('red_fidelity_conversion_rate', 1);
$point_value = get_option('red_fidelity_point_value', 1);
echo '<div class="red_fidelity_backoffice wrap"><h2><a href="https://devinred.com" target="_blank">đdevInRed</a>: Impostazioni Red-Fidelity</h2>
<form method="post">
<label>Punti massimi per ordine:</label>
<input type="number" name="red_fidelity_max_points" value="' . esc_attr($max_points) . '" />
<label>Punti per 1 ' . get_woocommerce_currency() . ':</label>
<input type="number" step="1" name="red_fidelity_conversion_rate" value="' . esc_attr($conversion_rate) . '" />
<label>Valore di 1 punto in ' . get_woocommerce_currency() . ':</label>
<input type="number" step="0.01" name="red_fidelity_point_value" value="' . esc_attr($point_value) . '" />
<input type="submit" value="Salva" class="button button-primary" />
</form>
</div>';
};
3. includes/points-system.php
Questo file gestisce la logica dei punti fedeltĂ :
- Calcola lo sconto basato sui punti accumulati.
- Aggiorna i punti degli utenti al completamento di un ordine.
- Previene che i punti dell’ordine vengano processati piĂš di 1 volta.
- Aggiunge un riepilogo dei punti usati durante il checkout.
Mostra il codice
<?php
function register_pods_config()
{
// Aggiunge fidelity-points al post type user
pods_register_config_file(plugin_dir_path(__FILE__) . '/pods.json');
}
add_action('init', 'register_pods_config');
function apply_fidelity_points_discount($cart)
{
if (is_admin() && ! defined('DOING_AJAX')){
return;
}
// verifico l'utente e carico i punti fedeltĂ
$user_id = get_current_user_id();
$pods_user = pods('user', $user_id);
$current_points = $pods_user->field('fidelity-points');
// Imposto i punti massimi utilizzabili e il valore di conversione
$max_points = get_option('red_fidelity_max_points', 1000);
$point_value = get_option('red_fidelity_point_value', 0.1);
// Calcolo il totale del carrello e il massimo sconto utilizzabile
$cart_total = $cart->get_subtotal();
$max_points_discount = floor($cart_total / $point_value);
// Calcolo i punti da utilizzare
$points_to_use = min($current_points, $max_points);
$points_to_use = min($points_to_use, $max_points_discount);
// Calcolo il valore dello sconto
$discount_value = $points_to_use * $point_value;
// Aggiungo lo sconto al carrello
if ($discount_value > 0) {
$cart->add_fee('Punti fedeltĂ usati: '.$points_to_use.'/'.$current_points, -$discount_value, true, '');
}
}
add_action('woocommerce_cart_calculate_fees', 'apply_fidelity_points_discount', 10, 1);
function change_fidelity_points_on_order_complete($order_id)
{
// Ottengo l'ordine
$order = wc_get_order($order_id);
// Verifico se l'ordine è giĂ stato processato per i punti fedeltĂ
$red_fidelity_processed = get_post_meta($order_id, '_red_fidelity_processed', true);
if ($red_fidelity_processed) {
return;
}
update_post_meta($order_id, '_red_fidelity_processed', '1');
$user_id = $order->get_user_id();
// Se l'utente ha un ID
if ($user_id) {
// Ottengo il tasso di conversione e il valore di 1 punto
$conversion_rate = get_option('red_fidelity_conversion_rate', 1);
$points_value = get_option('red_fidelity_point_value', 1);
// Calcolo i punti da aggiungere in base al totale dell'ordine
$order_total = $order->get_total();
$points_to_add = (int) $order_total * $conversion_rate;
// Aggiungo i punti all'utente
$pods_user = pods('user', $user_id);
if ($pods_user->exists()) {
// Recupero i punti attuali e aggiungo i nuovi punti
$current_points = (int) $pods_user->field('fidelity-points');
$new_points = $current_points + $points_to_add;
// Aggiorno i punti fedeltĂ dell'utente sottraendo i punti utilizzati
$fee_total = 0;
foreach ($order->get_fees() as $fee) {
// Verifico se la fee è relativa ai punti fedeltĂ
if (strpos($fee->get_name(), 'Punti fedeltĂ usati') !== false) {
$fee_total += $fee->get_total();
}
}
// Calcolo i punti utilizzati in valore assoluto (perchÊ lo sconto è negativo)
$fee_total = abs($fee_total);
$points_used = 0;
if ($fee_total > 0) {
// Se ho utilizzato dei punti, calcolo quanti punti ho utilizzato convertendo il valore dello sconto in punti
$points_used = floor($fee_total / $points_value);
$new_points = $new_points - $points_used;
}
// Aggiorno i punti fedeltĂ dell'utente
$pods_user->save(array('fidelity-points' => $new_points));
}
}
}
add_action('woocommerce_order_status_completed', 'change_fidelity_points_on_order_complete');
// Aggiungo la colonna Fidelity Points alla lista utenti
add_filter('manage_users_columns', function ($columns) {
$columns['fidelity_points'] = 'Fidelity Points';
return $columns;
});
// Mostro i punti fedeltĂ nella colonna Fidelity Points
add_filter('manage_users_custom_column', function ($value, $column_name, $user_id) {
if ($column_name == 'fidelity_points') {
$pods = pods('user', $user_id);
if ($pods->exists()) {
$fidelity_points = $pods->field('fidelity-points');
return (int)$fidelity_points;
} else {
return 'Nessun punto fedeltĂ ';
}
}
return $value;
}, 10, 3);
// Stampo i punti fedeltĂ nella dashboard dell'utente
add_action('woocommerce_account_dashboard', function () {
$user_id = get_current_user_id();
$pods = pods('user', $user_id);
if ($pods->exists()) {
$fidelity_points = $pods->field('fidelity-points');
echo '<div class="red-fidelity-user">Punti FedeltĂ : <span>' . (int)$fidelity_points . '</span></div>';
} else {
echo '<div class="red-fidelity-user">Nessun punto fedeltĂ </div>';
}
});
4. includes/pods.json
Il file di configurazione di Pods per definire la struttura dei dati utente. Red-Fidelity utilizza Pods per gestire i punti fedeltĂ , memorizzandoli come un campo personalizzato nell’oggetto “user”. Il sistema tiene traccia dei punti attraverso il campo “fidelity-points”.
Mostra il codice
{
"@meta": {
"version": "3.2.8.2",
"build": 1740665993
},
"pods": [
{
"name": "user",
"id": 71,
"label": "User",
"description": "",
"type": "user",
"storage": "meta",
"object": "user",
"_migrated_28": "1",
"groups": [
{
"name": "red-fidelity-pod",
"id": 72,
"label": "Red Fidelity Pod",
"description": "",
"weight": 0,
"roles_allowed": "administrator",
"fields": [
{
"name": "fidelity-points",
"id": 73,
"label": "Fidelity Points",
"description": "",
"weight": 0,
"type": "number",
"number_format_type": "number",
"number_format": "i18n",
"number_decimals": "0",
"number_format_soft": "0",
"number_step": "1",
"number_max_length": "12",
"number_html5": "0",
"repeatable": "0",
"repeatable_format": "default",
"default_evaluate_tags": "0",
"default_empty_fields": "0",
"roles_allowed": "administrator",
"enable_conditional_logic": "0",
"rest_pick_response": "array",
"rest_pick_depth": "1",
"required": "0"
}
]
}
]
}
]
}5. assets/style.css
I punti fedeltĂ sono visualizzati in un contenitore ben stilizzato con un colore di sfondo chiaro e un bordo arrotondato. Il testo dei punti è evidenziato in un colore accattivante, per attirare l’attenzione dell’utente.
Mostra codice
/* Stile per il contenitore dei punti fedeltĂ */
.red-fidelity-user {
background-color: #f0f4f8;
border: 1px solid #ccc;
border-radius: 5px;
padding: 15px;
font-size: 1.1em;
color: #333;
display: flex;
justify-content: space-between;
align-items: center;
margin: 20px auto;
}
/* Stile per i punti fedeltĂ */
.red-fidelity-user span {
font-weight: bold;
color: #008ab5;
}
6. assets/admin-style.css
Il pannello di configurazione ha uno sfondo chiaro, bordi arrotondati e ombra per un aspetto moderno e pulito. I form sono facili da utilizzare, con input numerici che evidenziano il focus e pulsanti chiari per la conferma delle modifiche
Mostra il codice
.red_fidelity_backoffice {
background-color: #f9f9f9;
border-radius: 8px;
padding: 20px;
max-width: 600px;
margin: 0 auto;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.red_fidelity_backoffice h2 {
font-size: 1.8em;
color: #333;
margin-bottom: 20px;
font-weight: bold;
text-align: center;
}
.red_fidelity_backoffice a {
color: #008ab5;
text-decoration: none;
}
.red_fidelity_backoffice h2 a:hover {
text-decoration: underline;
}
.red_fidelity_backoffice form {
display: flex;
flex-direction: column;
}
.red_fidelity_backoffice label {
font-size: 1.1em;
margin-bottom: 5px;
color: #333;
}
.red_fidelity_backoffice input[type="number"] {
padding: 10px;
font-size: 1em;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 5px;
transition: border-color 0.3s ease;
}
.red_fidelity_backoffice input[type="number"]:focus {
border-color: #008ab5;
outline: none;
}
.red_fidelity_backoffice input[type="submit"] {
background-color: #008ab5;
color: white;
font-size: 1.1em;
padding: 12px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.red_fidelity_backoffice input[type="submit"]:hover {
background-color: #008ab5;
}
Conclusioni
Il plugin Red-Fidelity è una soluzione potente e personalizzabile per la gestione dei programmi di fidelizzazione su WooCommerce. Utilizzando Pods per memorizzare e gestire i dati utente, puoi facilmente tracciare i punti fedeltĂ e fornire ai tuoi clienti uno strumento per ottenere sconti sui loro acquisti futuri. Grazie alla sua facilitĂ di configurazione e integrazione, Red-Fidelity ti aiuta a migliorare lâesperienza di acquisto e a rafforzare la fedeltĂ dei tuoi clienti.
Con le opzioni di personalizzazione e la gestione facile del back office, il plugin è unâottima scelta per negozi di qualsiasi dimensione che vogliano implementare un programma di fidelizzazione semplice e automatico.
Migliorie
Il plugin è stato progettato per essere estremamente semplice, sia da utilizzare che da modificare ed espandere. L’obiettivo era offrire uno strumento flessibile che potesse adattarsi facilmente alle diverse esigenze.
Per esempio, sarebbe interessante creare uno shortcode che consenta di visualizzare il saldo punti in qualsiasi parte del sito, come l’header, il footer, o anche in una sidebar.
Inoltre, si potrebbe aggiungere un’azione che attivi una funzione ogni volta che i punti vengono aggiornati, permettendo, ad esempio, di inviare automaticamente l’aggiornamento dei punti ai contatti di Brevo per un marketing mirato.
Le possibilitĂ di personalizzazione sono praticamente infinite, e potrai facilmente adattare il plugin alle tue necessitĂ !
Ottieni il Plugin Red-Fidelity Gratuitamente!
Se sei pronto a migliorare la fidelizzazione dei tuoi clienti con il plugin sviluppato in questo articolo? Compila il form qui sotto e ricevilo immediatamente nella tua casella di posta. Ă gratuito e pronto per l’uso sul tuo negozio!
Non perdere questa opportunitĂ di implementare un sistema di punti fedeltĂ semplice ed efficace per premiare i tuoi clienti.
Compila il form e scarica il plugin Red-Fidelity ora! đ
