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.
Here’s a basic example:
function customContentProtection($data)
{
devuelve true;
}
add_filter('mm_bypass_content_protection', 'customContentProtection');
In this example, we’re using the add_filter() para indicar que el customContentProtection() cuando MemberMouse aplique el método mm_bypass_content_protection filtro.
To learn more about working with WordPress’ Action API leer este artículo.
Referencia del filtro MemberMouse
The following is a list of all of the MemberMouse filters, a description of when they’re executed, and information on the data that will be passed to any function hooked into the filter.
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.
Your function should return an integer representing the number of days that should be allowed to elapse before the next attempt. Here’s an example that replicates the default dunning intervals:
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
This filter is applied after MemberMouse has determined the current visitor doesn’t have access to the content, and allows you to selectively bypass content protection.
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.
The object passed to your function contains the URL MemberMouse will redirect the user to if you don’t return an override URL and a user object containing data about the logged in user.
Si el nombre del objeto en su función es $infoObj then you’ll access the two data elements as follows:
$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.
Here’s an example:
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 = "Order # " . $order->orderNumber;
if (isset($order->orderProducts) && is_array($order->orderProducts))
{
$description .= ", Item: " . array_pop($order->orderProducts)->description;
}
return $description;
}, 1, 2);
This filter can only act on rebills, not initial payments. To see all the data that’s possible to access on the 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.
The example below shows the steps to remove the default filter and replace it with a custom filter. This can be added into the theme’s function.php file, but we recommended that if you take this route, you use a Tema infantil para evitar que su código se pierda en caso de actualización del tema.
//remove the default filter
remove_filter('mm_password_strength_validator',array('MM_UserHooks',"passwordStrengthValidator"));
//add a filter that enforces that passwords are at least 8 characters and contain an uppercase letter, a number, and a special character
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[] = "Password must contain an uppercase character, a special character, and a number";
}
return $passwordData;
}, 10, 1);

