Red-Fidelity: Un plugin di Fidelizzazione(Loyalty) per WooCommerce con Pods gratuito

Plugin di Fidelizzazione

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€.

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.
Plugin di Fidelizzazione: settings

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! 👇

Richiedi Plugin Red Fidelity

Uso VHosting per i miei siti da anni e lo consiglio per affidabilitĂ  e convenienza. Ho un’affiliazione attiva: se segui il mio link, io ricevo una commissione, ma il costo per te resta lo stesso!