Skip to content

Subscriptions

El módulo de suscripciones añade productos con pagos recurrentes. Los clientes compran suscripciones con renovación manual, y el administrador las gestiona en WooCommerce.

  1. El administrador crea un tipo de producto “Suscripción” con un ciclo y un precio
  2. El cliente compra una suscripción y paga el primer pedido
  3. El plugin crea una suscripción con el estado “Activa”
  4. Antes de la fecha de renovación, el cliente recibe un correo de recordatorio
  5. En la fecha de renovación, el plugin crea un pedido de renovación
  6. El cliente paga el pedido de renovación (renovación manual)
  7. El ciclo se repite hasta que se cancela la suscripción

Vaya a WooCommerce > Ajustes > Polski > Módulos PRO > Suscripciones.

El módulo se controla mediante la opción:

polski_subscriptions
AjusteDescripción
Activar suscripcionesActiva el módulo
Modo de renovaciónManual (el cliente paga el pedido)
Días de recordatorioCuántos días antes de la renovación se envía un recordatorio (por defecto 3)
Periodo de graciaCuántos días después de la fecha de renovación la suscripción permanece activa (por defecto 7)
Suspensión automáticaSuspender la suscripción tras finalizar el periodo de gracia
  1. Vaya a Productos > Añadir nuevo
  2. Seleccione el tipo de producto: Suscripción
  3. Configure el precio y el ciclo:
CampoDescripción
Precio de la suscripciónImporte por periodo de facturación
Periodo de facturaciónDía / Semana / Mes / Año
Duración del periodoNúmero de periodos (p. ej. 1 mes, 3 meses)
Precio inicialOpcional - precio distinto para el primer periodo
Cuota de activaciónOpcional - cuota única en el primer pedido
Límite de renovaciones0 = sin límite, o número de renovaciones
  1. Publique el producto

Precio inicial frente a precio de renovación

Section titled “Precio inicial frente a precio de renovación”

El plugin admite escenarios en los que el precio del primer periodo difiere del precio de los periodos siguientes. Casos de uso habituales:

  • periodo de prueba gratuito o de prueba a precio reducido
  • precio promocional de introducción
  • cuota de activación + precio recurrente más bajo

El precio inicial se aplica únicamente al primer pedido. Los pedidos de renovación posteriores utilizan el precio estándar de la suscripción.

Pending → Active → On Hold → Active → ...
→ Expired
→ Cancelled
EstadoDescripción
PendingA la espera del pago del primer pedido
ActiveActiva - el cliente tiene acceso al producto
On HoldSuspendida - el pedido de renovación está a la espera de pago
ExpiredCaducada - el número de renovaciones alcanzó el límite o transcurrió el periodo de gracia
CancelledCancelada por el cliente o el administrador

En la versión actual, el plugin admite renovaciones manuales. Esto significa que:

  1. El plugin crea un pedido de renovación con el estado “Pago pendiente”
  2. El cliente recibe un correo con un enlace para pagar el pedido
  3. El cliente paga el pedido con el método de pago que elija
  4. Tras el pago, la suscripción se renueva por el siguiente periodo

El plugin comprueba a diario las suscripciones pendientes de renovación mediante WP-Cron:

polski_daily_maintenance

La tarea cron se ejecuta una vez al día y realiza lo siguiente:

  • comprobar las suscripciones cuya fecha de renovación es hoy o anterior
  • crear pedidos de renovación para las suscripciones que requieren renovación
  • suspender las suscripciones que han superado el periodo de gracia
  • caducar las suscripciones que han alcanzado el límite de renovaciones

El plugin envía recordatorios por correo antes de la fecha de renovación:

CorreoCuándoContenido
Recordatorio de renovaciónX días antes de la renovaciónInformación sobre la próxima renovación, importe, enlace al área
Pedido de renovaciónEn la fecha de renovaciónPedido a pagar con enlace de pago
Suscripción suspendidaTras vencer el plazo de pagoInformación sobre la suspensión, enlace para pagar
Suscripción caducadaTras finalizar el periodo de graciaInformación sobre la caducidad, enlace para volver a comprar

Las plantillas de correo pueden personalizarse en WooCommerce > Ajustes > Correos electrónicos.

El módulo añade un endpoint /polski-subscriptions al área Mi cuenta del cliente. El endpoint está disponible en:

/moje-konto/polski-subscriptions/

El cliente ve una tabla con las suscripciones:

ColumnaDescripción
ProductoNombre del producto de suscripción
EstadoEstado actual de la suscripción
PrecioImporte por periodo
Próxima renovaciónFecha de la próxima renovación
AccionesCancelar / Pagar renovación

Tras hacer clic en una suscripción, el cliente ve:

  • los datos completos de la suscripción (producto, precio, ciclo, fechas)
  • el historial de renovaciones (lista de pedidos asociados)
  • el botón para cancelar la suscripción
  • el botón para pagar una renovación pendiente (si corresponde)

El cliente puede cancelar una suscripción activa desde el área Mi cuenta. La cancelación:

  • cambia el estado de la suscripción a “Cancelled”
  • la suscripción permanece activa hasta el final del periodo pagado en curso
  • se informa al cliente de la fecha de finalización del acceso

Acción que se dispara tras un cambio de estado de la suscripción.

/**
* @param int $subscription_id ID subskrypcji
* @param string $new_status Nowy status
* @param string $old_status Poprzedni status
*/
do_action('polski_pro/subscription/status_changed', int $subscription_id, string $new_status, string $old_status);

Ejemplo:

add_action('polski_pro/subscription/status_changed', function (int $subscription_id, string $new_status, string $old_status): void {
if ($new_status === 'cancelled') {
$subscription = polski_pro_get_subscription($subscription_id);
// Wysłanie ankiety o powód rezygnacji
wp_mail(
$subscription->get_customer_email(),
'Szkoda, że odchodzisz',
'Powiedz nam, dlaczego anulujesz subskrypcję: https://example.com/ankieta'
);
}
}, 10, 3);

Acción que se dispara tras crear un pedido de renovación.

/**
* @param int $order_id ID zamówienia odnowienia
* @param int $subscription_id ID subskrypcji
*/
do_action('polski_pro/subscription/renewal_created', int $order_id, int $subscription_id);

Ejemplo:

add_action('polski_pro/subscription/renewal_created', function (int $order_id, int $subscription_id): void {
$order = wc_get_order($order_id);
$order->add_order_note(
sprintf('Zamówienie odnowienia dla subskrypcji #%d', $subscription_id)
);
}, 10, 2);

Acción que se dispara tras pagar un pedido de renovación.

/**
* @param int $order_id ID zamówienia odnowienia
* @param int $subscription_id ID subskrypcji
*/
do_action('polski_pro/subscription/renewal_paid', int $order_id, int $subscription_id);

Hooks de recordatorio de renovación (1.8.2+)

Section titled “Hooks de recordatorio de renovación (1.8.2+)”

El motor de recordatorios (14 + 7 días antes de la renovación por defecto) expone filtros y acciones:

// Customise windows (days before renewal)
add_filter('polski_subscription_reminder_windows', fn ($w) => ['first' => 21, 'second' => 7, 'last' => 1]);
// Subject / body / headers filters
add_filter('polski_subscription_reminder_subject', fn ($s, $sub, $type) => "[$type] $s", 10, 3);
add_filter('polski_subscription_reminder_body', fn ($b, $sub, $type) => $b . "\n\nThanks!", 10, 3);
add_filter('polski_subscription_reminder_headers', fn () => ['Content-Type: text/html; charset=UTF-8']);
// Skip a specific subscription
add_filter('polski_subscription_skip_reminder', fn ($skip, $sub) => $sub->productId === 42, 10, 2);
// Observe dispatch
add_action('polski_subscription_reminder_sent', fn ($sub, $type, $days) => null, 10, 3);
add_action('polski_subscription_reminder_failed', fn ($sub, $type) => null, 10, 2);

Notificaciones de cambio de precio (1.8.3+)

Section titled “Notificaciones de cambio de precio (1.8.3+)”

SubscriptionRepository::updateRecurringAmount() detecta un cambio de importe y envía un correo al cliente con el precio anterior/nuevo, la próxima fecha de facturación efectiva y un enlace de cancelación con un solo clic (requisito de protección al consumidor de la UE).

add_action('polski_subscription_amount_changed', function (int $id, float $prev, float $next) {
error_log("Subscription $id: $prev -> $next");
}, 10, 3);
add_filter('polski_subscription_amount_change_body', fn ($body, $sub, $prev, $next) => $body, 10, 4);
add_action('polski_subscription_amount_change_notified', fn ($sub, $prev, $next, $sent) => null, 10, 4);

Vaya a WooCommerce > Suscripciones. La tabla contiene:

  • ID de la suscripción
  • cliente (nombre, apellidos, correo)
  • producto
  • estado
  • precio y ciclo
  • fecha de la próxima renovación
  • fecha de creación

Filtros disponibles: estado, producto, fecha de creación.

El administrador puede:

  • cambiar el estado de la suscripción
  • cambiar la fecha de la próxima renovación
  • cambiar el precio (afecta a las renovaciones posteriores)
  • añadir una nota
  • consultar el historial de estados y los pedidos asociados
  1. Compruebe si WP-Cron funciona correctamente (se está llamando a wp_cron)
  2. Vaya a Herramientas > Scheduled Actions y compruebe si la tarea polski_daily_maintenance está programada
  3. Verifique que la suscripción tenga el estado “Active” y una fecha de renovación correcta
  1. Compruebe la configuración de correos de WooCommerce
  2. Verifique que la plantilla del correo de recordatorio esté activada
  3. Compruebe el ajuste “Días de recordatorio” - si es mayor que 0

La suscripción no cambia de estado tras el pago

Section titled “La suscripción no cambia de estado tras el pago”
  1. Compruebe si el pedido de renovación está correctamente asociado a la suscripción
  2. Verifique los registros de WooCommerce en busca de errores
  3. Compruebe si la pasarela de pago cambia correctamente el estado del pedido
Esta página tiene únicamente carácter informativo y no constituye asesoramiento legal. Consulte a un abogado antes de la implementación. Polski for WooCommerce es software de código abierto (GPLv2) proporcionado sin garantía.