Cette page présente toutes les actions publiques et tous les filtres disponibles dans la base de données Simple Points & Rewards (Pro) pour étendre le comportement ou l'intégrer à un code personnalisé.
Le code fourni sur cette page n'est donné qu'à titre d'exemple et doit être utilisé avec prudence et en effectuant des tests appropriés.
Cycle de vie des points essentiels #
Filtre : spar_user_points #
Modifier le solde restitué (affichage) pour un utilisateur.
Paramètres :
int $pointsSolde stocké à partir des méta utilisateursPoints d'épargne.int $user_id
Exemple :
add_filter( 'spar_user_points', function( $points, $user_id ) {
// Ajout d'un bonus virtuel de 100pt pour les administrateurs
if ( user_can( $user_id, 'manage_options' ) ) {
$points += 100 ;
}
return $points ;
}, 10, 2 ) ;
Filtre : spar_update_user_points_args #
Ajuster les arguments avant l'application d'une mise à jour des points.
Paramètres : (int $user_id, int $points, string $action, string $note, string $action_id)
Action : spar_before_points_update #
Le feu avant une mise à jour de l'équilibre.
Paramètres : (int $user_id, int $points, string $action, string $note, string $action_id)
Action : spar_after_points_update #
Feu après une mise à jour de l'équilibre.
Paramètres : (int $user_id, int $new_balance, int $delta, string $action, string $note, string $action_id)
Action : spar_points_added #
Le crochet de rétrocompatibilité est déclenché lorsque des points sont ajoutés.
Paramètres : (int $user_id, int $points, string $note, string $action_id)
Action : spar_points_supprimés #
Déclenché lorsque des points sont retirés.
Paramètres : (int $user_id, int $points, string $note, string $action_id)
#
Filtre : spar_points_histoire_par_page #
Contrôle le nombre de lignes de journal par page affichées dans l'historique.
Paramètres : (int $per_page, int $user_id)
Filtre : histoire_des_points_des_utilisateurs_de_spar_spar_spar_spar_spar_users_points_history #
Modifier la réponse de l'historique assemblé.
Paramètres : (tableau $result, int $user_id) où $result = [ 'logs' => [], 'pagination' => [] ].
Action : spar_user_level_changed #
Déclenché lorsqu'un utilisateur passe à un nouveau niveau.
Paramètres : (int $user_id, array $new_level, array|null $previous_level, int $lifetime_total_earned)
Commandes (gagner/déduire) #
Filtres et actions permettant d'attribuer ou de supprimer des points lors d'événements de commande.
taux_de_points_de_ordre_de_spar- Ignorer le calcul des points par unité monétaire.points_de_base_de_l'ordre_de_spar- Ajuster les points de base avant les paliers/multiplicateurs.spar_order_fixed_points- Ajuster les points fixes.multiplicateur_de_points_de_ordre_de_spar- Ajuster le multiplicateur effectif pour l'ordre.points_ordre_attribués_spar- Ajuster le nombre final de points attribués à une commande.spar_order_points_action_text- Modifier la note de journal pour les points d'ordre attribués.points d'ordre spar_before_award_order_points/points d'ordre spar_after_award- Avant et après l'attribution des points.spar_order_points_to_deduct- Ajuster le nombre de points à retirer en cas de remboursement ou d'annulation.spar_order_deduction_action_id- Modifier l'identifiant de l'action utilisé pour l'enregistrement des déductions.spar_order_deduction_action_text- Modifier le message du journal pour les événements de déduction.spar_after_deduct_order_points- Feu après déduction des points en raison d'une modification de l'état de la commande.
Remboursement et bons #
Hooks relatifs à l'échange de récompenses, à la création de bons et au flux d'échange frontal.
spar_before_reward_redemption- Avant de traiter un échange de primes.objet_de_la_récompense_de_la_spar- Ajustez le tableau des récompenses avant la logique.points_de_récompense_de_coût_de_spar- Modifier le nombre de points requis.spar_can_redeem_reward- Autoriser ou refuser le rachat.spar_reward_redemption_refunded- Renvoyé en cas d'échec du rachat et remboursé.spar_after_reward_redemption- Après un rachat réussi.spar_reward_voucher_meta- Modifier le coupon de réduction méta.spar_reward_voucher_created- Lors de la création d'un poste de coupon.spar_voucher_claimed- Lorsqu'un bon est réclamé.
Crochets d'intégration frontale :
spar_before_handle_redeem_requestspar_redeem_product_redirect_urlspar_redeem_success_redirectspar_before_apply_coupon_from_query/spar_after_apply_coupon_from_queryspar_ajax_before_apply_voucher/spar_ajax_after_apply_voucherspar_voucher_deferred,spar_voucher_pending_invalid,spar_voucher_auto_applied
Courriels #
Crochet générique de résultat d'envoi d'email partagé par tous les types :
Action : spar_email_sent #
Paramètres : (string $type, bool $sent, string $to, string $subject, int $user_id, string $context_id)
Type $:points_gagnés|voucher_claimed$context_id: Pour les points_gagnés, c'est$action_id; pour voucher_claimed, il s'agit ducode_voucher.
Filtres :
spar_email_points_earned_subjectspar_email_points_earned_bodyspar_email_voucher_claimed_subjectspar_email_voucher_claimed_body
Niveaux #
icônes de badges spar_badgetous_les_niveauxNiveau de l'utilisateurspar_user_next_levelprogrès_niveau_de_sparmultiplicateur de points spar_utilisateur
Mon compte / Shortcode UI #
spar_rewards_menu_labeléléments de menu du compte spar- Filtre le tableau de menu final après l'insertion.spar_rewards_overview_htmlspar_rewards_visible_tabsspar_before_rewards_tabonglet spar_after_rewards_tabspar_render_tab_{key}- Clés :gagner,demande,niveaux,l'histoire,bons.
Coupons (liste administrative) #
Filtre : Préfixes des coupons spar_récompense #
Ajustez les préfixes des codes de coupon qui sont masqués dans le tableau de la liste des coupons par défaut (par exemple, les bons de récompense, les coupons de parrainage).
Par défaut : ['gift-', 'voucher-', 'ref-' ]
Exemples rapides #
Attribution de 50 points supplémentaires sur toutes les commandes passées pour le rôle VIP :
add_filter( 'spar_order_awarded_points', function( $points, $order_id, $user_id ) {
if ( user_can( $user_id, 'vip_customer' ) ) {
$points += 50 ;
}
return $points ;
}, 10, 3 ) ;
Il faut 20% points en moins pour obtenir une récompense lors du Black Friday :
add_filter( 'spar_reward_cost_points', function( $cost, $reward, $user_id ) {
if ( date( 'm-d' ) === '11-28' ) {
$cost = (int) round( $cost * 0.8 );
}
return max( 1, $cost );
}, 10, 3 );
Remplacer l'objet et le corps de l'e-mail de réclamation de bons d'études :
add_filter( 'spar_email_voucher_claimed_subject', function( $subject, $ctx ) {
return 'Votre bon est en ligne ! Code : ' . $ctx['voucher_code'] ;
}, 10, 2 ) ;
add_filter( 'spar_email_voucher_claimed_body', function( $body, $ctx ) {
return wpautop('Utilisez votre code à la caisse pour économiser. Profitez-en!') ;
}, 10, 2 ) ;
Réagir aux montées en niveau :
add_action( 'spar_user_level_changed', function( $user_id, $new_level, $prev_level ) {
// Etiqueter dans le CRM, etc.
}, 10, 3
Fonctions #
Gestion des points (ajout/suppression programmatique) #
spar_update_user_points( int $user_id, int $points, string $action, string $note = '', string $action_id = 'custom' )
Mise à jour du solde d'un utilisateur et insertion d'une ligne de journal.
$action:'add' (ajouter)'ou'supprimer'$notetexte court placé dans le relevé de points (stocké sous forme aseptisée)$action_idClé de machine stable : clé de machine stable pour l'événement, par exemplecommande_remboursement,s'inscrire,prime d'examen
Exemples :
<?php
/**
* Ajoutez 50 points avec une note de journal claire et une clé d'action personnalisée.
*/
$user_id = get_current_user_id() ;
if ( $user_id ) {
$points = absint( 50 ) ;
$note = sanitize_text_field( 'Promo Bonus' ) ;
$action_id = sanitize_key( 'promo_bonus' ) ;
spar_update_user_points( $user_id, $points, 'add', $note, $action_id ) ;
}
/**
* Supprimer 30 points (par exemple, ajustement manuel de l'administrateur).
*/
$user_id = 123 ;
$points = absint( 30 ) ;
$note = sanitize_text_field( 'Ajustement manuel' ) ;
$action_id = sanitize_key( 'admin_adjust' ) ;
spar_update_user_points( $user_id, $points, 'remove', $note, $action_id ) ;
Calculs des points de commande (pour les aperçus/estimations) #
Des aides pour calculer les mêmes valeurs que celles utilisées par le plugin lors de l'attribution des points de commande.
Utile pour afficher “Vous gagnerez X points” sur les pages de produits ou de paniers.
spar_get_order_points_rate( string $currency_code = '' ) : float
Renvoie les points par unité monétaire de 1,0 après les réglages et les filtres.
<?php
$rate = (float) spar_get_order_points_rate( get_woocommerce_currency() ) ;
spar_calculate_order_base_points( WC_Order $order ) : int
Points basés sur les dépenses avant les multiplicateurs et les niveaux.
<?php
$order = wc_get_order( $order_id ) ;
$base = (int) spar_calculate_order_base_points( $order ) ;
spar_calculate_fixed_order_points_for_total( float $total, string $currency ) : array
Les retours de résultats à niveau fixe :
points(int) points d'échelon actuelsdelta_suivant(float|null) dépenses nécessaires pour atteindre le niveau suivantpoints_suivants(int|null) points gagnés au niveau suivant
cart->get_total( 'edit' ) ; // Ou votre propre total.
$info = spar_calculate_fixed_order_points_for_total( $total, get_woocommerce_currency() ) ;
$current_points = (int) $info['points'] ;
Exemple : “Vous gagnerez X points” sur les pages de produits
<?php
add_action( 'woocommerce_single_product_summary', function() {
if ( ! is_user_logged_in() || empty( WC()->cart ) ) {
retour ;
}
$currency = get_woocommerce_currency() ;
$rate = (float) spar_get_order_points_rate( $currency ) ;
si ( $rate <= 0 ) {
return;
}
global $product;
$price = (float) wc_get_price_excluding_tax( $product );
$estimate = (int) floor( $price * $rate );
if ( $estimate > 0 ) {
echo '<p class="spar-estimate">' . esc_html(
sprintf(
__('Gagnez environ %d points pour cet article', 'simple-points-and-rewards' ),
$estimate
)
) . '</p>';
}
}, 25 );
Aide aux niveaux #
spar_get_user_points_multiplier( int $user_id ) : float
Renvoie le multiplicateur actuel basé sur le niveau, ou 1.0 si les niveaux sont désactivés.
<?php
$multiplier = function_exists( 'spar_get_user_points_multiplier' )
? (float) spar_get_user_points_multiplier( get_current_user_id() )
: 1.0 ;
Attribution/déduction liée aux commandes (déclenchement manuel) #
Le plugin attribue ou déduit automatiquement les prix sur les événements de la commande en fonction des paramètres. Pour exécuter la logique d'attribution manuellement :
spar_award_order_points( int $order_id ) : void
Idempotent si les points sont déjà stockés dans l'ordre méta.
<?php
// A utiliser avec précaution ; normalement contrôlé par les paramètres et les crochets.
spar_award_order_points( (int) $order_id ) ;
spar_deduct_refunded_order_points( int $order_id ) : void
Déduit les points précédemment attribués pour les commandes remboursées, annulées ou échouées, lorsque cette option est activée.
<?php
spar_deduct_refunded_order_points( (int) $order_id ) ;
Custom Rewards #
You can create a reward of type “Custom (Developer Hook)” in the Rewards settings tab. A custom reward lets you deduct points and then run your own logic when the customer claims it.
Fields:
- Short Description – shown to customers in the Ways to Redeem list.
- Developer Reward ID – lowercase unique identifier (letters, numbers, hyphens, underscores) you can use to distinguish multiple custom rewards.
Hook fired after successful claim and points deduction:spar_custom_reward_claimed( $user_id, $developer_id, $reward_array, $points_spent )
Exemple :
add_action( 'spar_custom_reward_claimed', function( $user_id, $developer_id, $reward, $points_spent ) {
if ( 'vip_access' === $developer_id ) {
// Grant VIP role, or set a user meta flag
$user = get_user_by( 'ID', $user_id );
if ( $user && ! in_array( 'vip', $user->roles, true ) ) {
$user->add_role( 'vip' );
}
// Optional: notify user
wp_mail( $user->user_email, 'VIP Access Granted', 'Enjoy your new VIP benefits!' );
}
}, 10, 4 );
If your logic fails and you need to refund points, call:
spar_update_user_points( $user_id, $points_spent, 'add', 'Refund: custom reward failed', 'redeem_refund' );
This keeps the plugin flexible for bespoke reward types .