fbpx

MemberMouse Filtros WordPress

Los filtros son funciones a través de las cuales WordPress pasa los datos, en ciertos puntos de la ejecución, justo antes de tomar alguna acción con los datos. MemberMouse define su propio conjunto de filtros que puede utilizar para controlar el flujo de ejecución en MemberMouse antes de realizar determinadas acciones.

He aquí un ejemplo básico:

function customContentProtection($data)
{
     devuelve true;
}
add_filter('mm_bypass_content_protection', 'customContentProtection');

En este ejemplo, utilizamos la función add_filter() para indicar que el  customContentProtection() cuando MemberMouse aplique el método  mm_bypass_content_protection filtro.

Para obtener más información sobre cómo trabajar con la Action API de WordPress leer este artículo.

Referencia del filtro MemberMouse

A continuación se muestra una lista de todos los filtros MemberMouse, una descripción de cuándo se ejecutan e información sobre los datos que se pasarán a cualquier función enganchada al filtro.

Intervalo de exploración de facturación

mm_billing_scan_interval

MemberMouse 3.0+

MemberMouse ejecuta periódicamente un WP-Cron tarea que busca suscripciones pendientes de refacturación y las pone en cola para que las procese el sistema de facturación local. Por defecto, los escaneos se realizan cada quince minutos. Este filtro le permite modificar el intervalo entre exploraciones, lo que puede ser útil para optimizar el rendimiento de su sitio.

El plugin pasa un único argumento $scanInterval a su función, un número entero que representa el número predeterminado de minutos entre exploraciones. Su función debe devolver un número entero que represente los minutos deseados entre exploraciones. Por ejemplo, lo siguiente buscará suscripciones que estén listas para facturar una vez cada cinco minutos:

function customBillingScanInterval($scanInterval)
{
   return 5;
}
add_filter("mm_billing_scan_interval", "customBillingScanInterval", 10, 2);

Suscripción Intervalo de reclamación

mm_billing_subscription_dunning_interval

MemberMouse 3.0+

Si una suscripción no se factura en la fecha prevista, MemberMouse realiza tres intentos adicionales para cobrar el pago. Este filtro permite controlar el intervalo entre los intentos.

MemberMouse pasa dos argumentos a su función. El primero es un entero $failureInterval que representa el número predeterminado de días antes de que se realice el siguiente intento. El segundo es un número entero $failureState que representa el estado concreto de facturación fallida. Actualmente existen tres estados de fallo: 2, 3, 4 que representan el segundo, tercer y último intento de cobro, respectivamente.

Su función debe devolver un número entero que represente el número de días que deben transcurrir antes del siguiente intento. He aquí un ejemplo que reproduce los intervalos de reclamación por defecto:

function customDunningInterval($failureInterval, $failureState)
{
   switch ($failureState)
   {
      caso 2:
         return 2; // Primer reintento, dos días después del fallo de facturación inicial
      
      caso 3: return 3
         return 3; // Segundo reintento, tres días después del primer reintento
      
      caso 4: return 2
         return 2; // Tercer reintento, dos días después del segundo reintento
      
      por defecto:
         return $failureInterval;
   }
}
add_filter("mm_billing_subscription_dunning_interval", "customDunningInterval", 10, 2);

Para personalizar los intervalos de reclamación, sólo tiene que cambiar los valores devueltos en las tres sentencias case a la duración deseada en días.


Acceso en bloque

mm_block_access

Este filtro se aplica después de que MemberMouse haya determinado que el visitante actual tiene acceso al contenido, y le permite bloquear selectivamente el acceso al contenido protegido.

MemberMouse pasa un valor booleano $blockAccess a su función, indicando si bloqueará el acceso al contenido por defecto. Tu función debe devolver un booleano indicando si MemberMouse debe bloquear el acceso al contenido.

Por ejemplo, para bloquear el acceso de todos los miembros a contenidos protegidos:

function blockMemberAccess($blockAccess)
{
   devuelve true;
}
add_filter("mm_block_access", "blockMemberAccess", 10, 2);

Eludir la protección de contenidos

mm_bypass_content_protection

Este filtro se aplica después de que MemberMouse haya determinado que el visitante actual no tiene acceso al contenido, y le permite eludir selectivamente la protección de contenidos.

MemberMouse pasa un valor booleano $allowAccess a su función, indicando si proporcionará acceso al contenido por defecto. Su función debe devolver un booleano que indique si MemberMouse debe permitir el acceso al contenido.

Por ejemplo, lo siguiente permitirá que cualquier miembro al que se le haya asignado el Colaborador acceso a todas las páginas y entradas protegidas:

function allowAccessForContributors($allowAccess)
{
    if (current_user_can("contributor"))
    {
        return true;
    }
    else
    {
        return $allowAccess;
    }
}
add_filter("mm_bypass_content_protection", "allowAccessForContributors", 10, 2);

Tenga en cuenta que, aunque este filtro le permitirá acceder a páginas y entradas que de otro modo serían inaccesibles, no afecta al análisis sintáctico de las SmartTags de decisión.


Redirección de inicio de sesión

mm_login_redirect

Este filtro se aplica antes de que MemberMouse ejecute su comportamiento predeterminado de redirección de inicio de sesión, que es configurado en los ajustes de la página de inicio de los miembros. Devuelve una URL para indicar que MemberMouse debe redirigir al usuario a esa URL. Devuelve una cadena vacía para indicar que MemberMouse debe utilizar sus propias reglas internas para determinar a dónde se debe enviar al usuario.

El objeto pasado a su función contiene la URL a la que MemberMouse redirigirá al usuario si no devuelve una URL de anulación y un objeto de usuario que contiene datos sobre el usuario conectado.
Si el nombre del objeto en su función es $infoObj entonces accederás a los dos elementos de datos de la siguiente manera:

$infoObj->currentUrl
$infoObj->user

Descriptor de declaración de raya

mm_stripe_billing_statement_descriptor

Cuando MemberMouse inicia una refacturación, envía varios datos descriptivos sobre el cargo. El descriptor del extracto es lo que se mostrará al cliente en la factura de su tarjeta de crédito y también es visible en Stripe. Este filtro le permite personalizar el descriptor del extracto para las transacciones de refacturación.

Tenga en cuenta que la longitud total máxima del descriptor de extracto es de 22 caracteres, y que el envío de una cadena más larga hará que no se procese el pago. Además, los datos que envíe pueden estar truncados. Stripe crea en última instancia un "descriptor de extracto calculado" añadiendo el descriptor que usted envía al descriptor abreviado especificado en Configuración pública del panel de Stripepero la longitud máxima de esta cadena calculada también es de 22 caracteres, y todo lo que supere esta longitud será descartado.

Para calcular la longitud máxima del contenido que se mostrará, utilice la siguiente fórmula:

longitud máxima mostrada = 22 - (longitud del descriptor acortado + 2)

MemberMouse pasará dos parámetros a su función. El primero es Descriptor $ que es una cadena que contiene la información que MemberMouse enviará a menos que se modifique. El segundo es 1TP4Pedido que es un objeto de clase estándar que contiene datos de orden MemberMouse, que puede utilizar en la construcción del descriptor de sentencia. 

He aquí un ejemplo: 

add_filter("mm_stripe_billing_statement_descriptor", function($descriptor, $order)
{

   $descriptor = "Pedido #: " . $order->orderNumber;
   $maxLengthDescriptor = substr($descriptor,0,22);
   return $maxLengthDescriptor;
}, 1, 2);

Si su Descriptor abreviado es ABC sus clientes deberían ver algo parecido en los extractos de sus tarjetas de crédito:

ABC* Pedido #: 10043

Este filtro sólo puede actuar sobre las refacturaciones, no sobre los pagos iniciales.


Descripción de Stripe PaymentIntent

mm_stripe_paymentintent_description

Otro dato que se envía a Stripe con las refacturaciones es la Descripción, que este filtro le permite personalizar. La Descripción es una de las columnas que se muestran al seleccionar Pagos en el Panel de Stripe. La longitud máxima de este campo es de 350 caracteres.

MemberMouse pasará dos parámetros a su función. El primero es $descripción que es una cadena que contiene la información que MemberMouse enviará a menos que se modifique. El segundo es 1TP4Pedido que es un objeto de clase estándar que contiene datos de la orden MemberMouse, que puede utilizar en la construcción de la Descripción. 

Por ejemplo, para establecer este campo en Pedido# 1234, Artículo: Miembro Digital puede utilizar la siguiente función en su plugin:

add_filter('mm_stripe_paymentintent_description', function($description, $order)
{
   $description = "Pedido # " . $order->númeroDePedido;
   if (isset($order->orderProducts) && is_array($order->orderProducts))
   {
      $description .= ", Artículo: " . array_pop($order->orderProducts)->description;
   }
   return $description;
}, 1, 2);

Este filtro sólo puede actuar sobre las refacturaciones, no sobre los pagos iniciales. Para ver todos los datos a los que es posible acceder en el filtro 1TP4Pedido ver este objeto ejemplo de objeto de pedido.


Filtros por defecto de MemberMouse

Se trata de filtros incluidos en el plugin que pueden anularse en el código personalizado utilizando eliminar_filtro para implementar sus propios filtros relacionados.

Validador de contraseñas

mm_password_strength_validator

A partir de la versión 2.2.9, MemberMouse permite añadir un filtro de validación de contraseñas personalizado. Esto permite evaluar la contraseña en función de requisitos personalizados. De forma predeterminada, MemberMouse adjunta un filtro básico que comprueba que la contraseña tenga al menos 8 caracteres. Los desarrolladores tienen la opción de añadir un filtro adicional que se aplicará junto con el predeterminado, o eliminar el predeterminado y sustituirlo por un filtro personalizado.

El siguiente ejemplo muestra los pasos para eliminar el filtro predeterminado y sustituirlo por un filtro personalizado. Esto se puede añadir en el archivo function.php del tema, pero le recomendamos que si usted toma esta ruta, utilice un archivo Tema infantil para evitar que su código se pierda en caso de actualización del tema.

//eliminar el filtro por defecto
remove_filter('mm_password_strength_validator',array('MM_UserHooks', "passwordStrengthValidator"));

//añade un filtro que obligue a que las contraseñas tengan al menos 8 caracteres y contengan una letra mayúscula, un número y un carácter especial
add_filter('mm_password_strength_validator', function($passwordData)
{
   if (is_object($passwordData) && isset($passwordData->data) && !preg_match('/^(?=.*[!@#$%^&*-])(?=.*[0-9])(?=.*[A-Z]).{8,20}$/', $passwordData->data))
   {
      $passwordData->type = "error";
      $passwordData->errors[] = "La contraseña debe contener un carácter en mayúscula, un carácter especial y un número";
   }
   return $passwordData;
}, 10, 1);
¿Le ha resultado útil este artículo?

Artículos relacionados