Esta página documenta todas las acciones y filtros públicos disponibles en Simple Points & Rewards (Pro) para ampliar el comportamiento o integrarlo con código personalizado.
El código proporcionado en esta página es sólo un ejemplo y debe utilizarse con precaución y realizando las pruebas adecuadas.
Ciclo de vida de los puntos básicos #
Filtrar: spar_user_points #
Modificar el saldo devuelto (visualizado) de un usuario.
Parámetros:
int $pointsSaldo almacenado del usuario metapuntos_espar.int $user_id
Ejemplo:
add_filter( 'spar_user_points', function( $points, $user_id ) {
// Añade una bonificación virtual de 100pt para los administradores
if ( user_can( $user_id, 'manage_options' ) ) {
$points += 100;
}
return $points;
}, 10, 2 );
Filtrar: spar_update_user_points_args #
Ajuste los argumentos antes de aplicar una actualización de puntos.
Parámetros: (int $user_id, int $points, cadena $action, cadena $note, cadena $action_id)
Acción: spar_before_points_update #
Dispara antes de una actualización de saldo.
Parámetros: (int $user_id, int $points, cadena $action, cadena $note, cadena $action_id)
Acción: spar_after_points_update #
Dispara después de una actualización de equilibrio.
Parámetros: (int $user_id, int $new_balance, int $delta, cadena $action, cadena $note, cadena $action_id)
Acción: spar_points_added #
El gancho de retrocompensación se dispara cuando se añaden puntos.
Parámetros: (int $user_id, int $points, cadena $note, cadena $action_id)
Acción: spar_points_removed #
Se activa cuando se quitan puntos.
Parámetros: (int $user_id, int $points, cadena $note, cadena $action_id)
#
Filtrar: spar_points_history_per_page #
Controla cuántas filas de registro por página se muestran en el historial.
Parámetros: (int $per_page, int $user_id)
Filtrar: spar_user_points_history #
Modificar la respuesta del historial ensamblado.
Parámetros: (array $result, int $user_id) donde $result = [ 'logs' => [], 'pagination' => [] ].
Acción: spar_user_level_changed #
Se activa cuando un usuario pasa a un nuevo nivel.
Parámetros: (int $user_id, array $new_level, array|null $previous_level, int $lifetime_total_earned)
Pedidos (ingresos/deducciones) #
Filtros y acciones para otorgar o quitar puntos durante los eventos de pedido.
spar_order_points_rate- Anular el cálculo de puntos por unidad monetaria.spar_order_base_points- Ajustar los puntos base antes de los niveles/multiplicadores.spar_order_fixed_points- Ajustar los puntos de nivel fijo.spar_order_points_multiplier- Ajuste el multiplicador efectivo de la orden.spar_order_awarded_points- Ajustar los puntos finales concedidos por un pedido.spar_order_points_action_text- Modificar la nota de registro para los puntos de pedido concedidos.spar_before_award_order_points/spar_after_award_order_points- Antes y después de la concesión de puntos.spar_order_points_to_deduct- Ajuste el número de puntos a eliminar en caso de reembolso o cancelación.spar_order_deduction_action_id- Cambiar el ID de acción utilizado para el registro de deducciones.spar_order_deduction_action_text- Modificar el mensaje de registro para los eventos de deducción.spar_after_deduct_order_points- Incendio tras restar puntos por cambio de estado del pedido.
Canje y vales #
Ganchos relacionados con el canje de recompensas, la creación de vales y el flujo de canje del front-end.
spar_before_reward_redemption- Antes de tramitar el canje de una recompensa.spar_reward_object- Ajuste la matriz de recompensa antes de la lógica.spar_reward_cost_points- Modificar el número de puntos necesarios.spar_can_redeem_reward- Permitir o denegar el rescate.spar_reward_redemption_refunded- Despedido cuando falla el rescate y reembolsado.spar_after_reward_redemption- Después de la redención exitosa.spar_reward_voucher_meta- Modificar cupón meta.spar_reward_voucher_created- Cuando se crea el puesto de cupón.spar_voucher_claimed- Cuando se reclama un vale.
Ganchos de integración frontend:
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_ferred,spar_voucher_pending_invalid,spar_voucher_auto_applied
Correos electrónicos #
Gancho genérico de resultado de envío de correo electrónico compartido en todos los tipos:
Acción: spar_email_sent #
Parámetros: (string $type, bool $sent, string $to, string $subject, int $user_id, string $context_id)
Tipo $:puntos_ganados|vale_reclamado$context_id: Para points_earned esto es$action_id; para voucher_claimed este es elcódigo_vale.
Filtros:
spar_email_points_earned_subjectspar_email_points_earned_bodyspar_email_voucher_claimed_subjectspar_email_voucher_claimed_body
Niveles #
spar_badge_iconsspar_todos_los_nivelesspar_user_levelspar_user_next_levelspar_level_progressspar_user_points_multiplier
Mi cuenta / Shortcode UI #
spar_rewards_menu_labelspar_account_menu_items- Filtra la matriz final del menú después de la inserción.spar_rewards_overview_htmlspar_rewards_visible_tabsspar_before_rewards_tabspar_after_rewards_tabspar_render_tab_{key}- Las llaves:gane,reclamar,niveles,historia,vales.
Cupones (lista admin) #
Filtrar: spar_reward_coupon_prefixes #
Ajuste qué prefijos de código de cupón se ocultan de la tabla de lista de cupones por defecto (por ejemplo, vales de recompensa, cupones de referencia).
Por defecto: [ 'gift-', 'voucher-', 'ref-' ]
Ejemplos rápidos #
Conceda 50 puntos extra fijos en todos los pedidos completados para la función 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 );
Se necesitan 20% puntos menos para canjear cualquier recompensa en el 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 );
Sustituya el asunto/cuerpo del correo electrónico del vale reclamado:
add_filter( 'spar_email_voucher_claimed_subject', function( $subject, $ctx ) {
return '¡Tu bono está activo! Código: ' . $ctx['voucher_code'];
}, 10, 2 );
add_filter( 'spar_email_voucher_claimed_body', function( $body, $ctx ) {
return wpautop( 'Utiliza tu código al pagar para ahorrar. ¡Disfrútalo!' );
}, 10, 2 );
Reacciona a las subidas de nivel:
add_action( 'spar_user_level_changed', function( $user_id, $new_level, $prev_level ) {
// Etiquetar en CRM, etc.
}, 10, 3
Funciones #
Gestión de puntos (añadir/eliminar mediante programación) #
spar_update_user_points( int $user_id, int $points, string $action, string $note = '', string $action_id = 'custom' )
Actualizar el saldo de un usuario e insertar una fila de registro.
$acción:'añadir'o'eliminar'$note: texto breve colocado en el registro de puntos (almacenado de forma desinfectada)$action_idclave de máquina estable para el evento, por ejemploreembolso_pedido,inscríbase en,review_bonus
Ejemplos:
<?php
/**
* Añade 50 puntos con una nota de registro clara y una clave de acción personalizada.
*/
$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 );
}
/**
* Eliminar 30 puntos (por ejemplo, ajuste manual de admin).
*/
$user_id = 123;
$points = absint( 30 );
$note = sanitize_text_field( 'Ajuste manual' );
$action_id = sanitize_key( 'admin_adjust' );
spar_update_user_points( $user_id, $points, 'remove', $note, $action_id );
Cálculo de puntos de pedido (para previsiones/estimaciones) #
Ayudantes para calcular los mismos valores que el plugin utiliza al otorgar puntos de pedido.
Útil para mostrar “Ganarás X puntos” en páginas de productos o carritos.
spar_get_order_points_rate( cadena $currency_code = '' ): float
Devuelve puntos por 1,0 unidad monetaria después de ajustes y filtros.
<?php
$rate = (float) spar_get_order_points_rate( get_woocommerce_currency() );
spar_calculate_order_base_points( WC_Order $order ): int
Puntos basados en el gasto antes de multiplicadores y niveles.
<?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
Devolución de resultados de nivel fijo:
puntos(int) puntos de nivel actualessiguiente_delta(float|null) gasto necesario para alcanzar el siguiente nivelsiguientes_puntos(int|null) puntos ganados en el siguiente nivel
cart->get_total( 'edit' ); // O tu propio total.
$info = spar_calculate_fixed_order_points_for_total( $total, get_woocommerce_currency() );
$current_points = (int) $info['points'];
Ejemplo: “Ganará X puntos” en las páginas de productos
<?php
add_action( 'woocommerce_single_product_summary', function() {
if ( ! is_user_logged_in() || empty( WC()->carro ) ) {
devolver;
}
$currency = get_woocommerce_currency();
$rate = (float) spar_get_order_points_rate( $currency );
if ( $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(
__( 'Gana aproximadamente %d puntos por este artículo', 'simple-points-and-rewards' ),
1TP4Estimación
)
) . '</p>';
}
}, 25 );
Ayuda de nivel #
spar_get_user_points_multiplier( int $user_id ): float
Devuelve el multiplicador basado en el nivel actual, o 1.0 si los niveles están desactivados.
<?php
$multiplier = function_exists( 'spar_get_user_points_multiplier' )
? (float) spar_get_user_points_multiplier( get_current_user_id() )
: 1.0;
Adjudicación/deducción vinculada a pedidos (activación manual) #
El plugin premia o deduce automáticamente en los eventos de pedido en función de la configuración. Para ejecutar la lógica de adjudicación manualmente:
spar_award_order_points( int $order_id ): void
Idempotente si los puntos ya están almacenados en el orden meta.
<?php
// Usar con cuidado; normalmente controlado por ajustes y hooks.
spar_award_order_points( (int) $order_id );
spar_deduct_refunded_order_points( int $order_id ): void
Deduce los puntos previamente concedidos por pedidos reembolsados, cancelados o fallidos, cuando está activado.
<?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 )
Ejemplo:
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 .