• Hi !

    I use Events Manager. I would like to add a system of points for my users (code below). They have some points who’s given by the admin and can use them for book events on Events Manager.

    I would like to define manually the point coast for each events. The point will be subtract for a booking or add for a refund.

    May be someone could help ? I’m newbie with php

    Thx

    <?php
    /*
    Plugin Name: Point Manager
    Description: Ce plugin permet de définir un nombre de points pour chaque utilisateur.
    Version: 1.0
    Author: Kévin Mazan
    */
    
    // Ajouter une colonne "Nombre de points" au tableau des utilisateurs
    add_filter('manage_users_columns', function($columns) {
      $columns['user_points'] = __('Nombre de points', 'text-domain');
      return $columns;
    });
    
    // Afficher le nombre de points dans la colonne "Nombre de points"
    add_filter('manage_users_custom_column', function($value, $column_name, $user_id) {
      if ($column_name === 'user_points') {
        $points = get_user_meta($user_id, 'user_points', true);
        return $points ? $points : 0;
      }
      return $value;
    }, 10, 3);
    
    // Fonction pour ajouter des points à un utilisateur
    function add_user_points($user_id, $points) {
      $current_points = get_user_points($user_id);
      $new_points = $current_points + $points;
      update_user_meta($user_id, 'user_points', $new_points);
    }
    
    // Fonction pour soustraire des points à un utilisateur
    function subtract_user_points($user_id, $points) {
      $current_points = get_user_points($user_id);
      $new_points = $current_points - $points;
      update_user_meta($user_id, 'user_points', $new_points);
    }
    
    // Fonction pour récupérer le nombre de points d'un utilisateur
    function get_user_points($user_id) {
      $points = get_user_meta($user_id, 'user_points', true);
      return empty($points) ? 0 : (int) $points;
    }
    
    // Ajouter un champ pour le nombre de points dans la page de profil de l'utilisateur
    add_action('show_user_profile', function($user) {
      $points = get_user_points($user->ID);
    ?>
      <h3>Points utilisateur</h3>
      <table class="form-table">
        <tr>
          <th><label for="user_points">Points:</label></th>
          <td><input type="number" name="user_points" id="user_points" value="<?php echo $points; ?>" /></td>
        </tr>
      </table>
    <?php
    });
    
    // Enregistrer le nombre de points modifié dans la base de données
    add_action('personal_options_update', function($user_id) {
      if (!current_user_can('edit_user', $user_id)) {
        return false;
      }
      if (isset($_POST['user_points'])) {
        $points = (int) $_POST['user_points'];
        update_user_meta($user_id, 'user_points', $points);
      }
    });
    

    I have this code for the system of point.

    Thx !

  • The topic ‘Reservation with points coast’ is closed to new replies.