Personalizar la sustitución de las etiquetas de correo

Los artículos de la categoría Manual del desarrollador abordan temas que requieren conocimiento técnico. Ten cuidado y utiliza las técnicas descritas a continuación bajo tu propia responsabilidad. Si no tienes experiencia en desarrollo, y necesitas ayuda, te recomendamos solicitar el apoyo de un profesional.

Una etiqueta de correo electrónico tiene una etiqueta de formulario correspondiente; cuando se compone un correo electrónico, una etiqueta de correo, en la plantilla de correo electrónico, se sustituye con el valor de entrada del usuario que viene a través del campo de entrada representado por la etiqueta de formulario correspondiente.

Por defecto, una etiqueta de correo se sustituye por el valor en bruto que el remitente introduce. Puedes personalizar la sustitución de las etiquetas de correo. Para ello, usa el gancho de filtro wpcf7_mail_tag_replaced, como se muestra en el siguiente ejemplo:

add_filter( 'wpcf7_mail_tag_replaced',

  function( $replaced, $submitted, $html, $mail_tag ) {
    if ( is_numeric( $submitted ) ) {
      $replaced = number_format( $submitted );
    }

    return $replaced;
  },

  10, 4
);

Esta función de filtrado formatea valores numéricos usando la función number_format (observa que los ejemplos de esta entrada usan funciones anónimas que están disponibles desde PHP 5.3 en adelante). Cuando el usuario introduzca «1234567890», verás «1,234,567,890» en el mensaje de correo electrónico.

El filtro de gancho wpcf7_mail_tag_replaced pasa cuatro parámetros a una función de gancho: $replaced, $submitted, $html, y $mail_tag.

$replaced tiene el valor generado como resultado de la sustitución de la etiqueta de correo.

$submitted tiene el valor original que ha sido introducido por el remitente.

$html tiene un valor booleano; que será «true» si la etiqueta de correo se usa en el cuerpo de un mensaje HTML.

$mail_tag tiene un objeto WPCF7_MailTag que representa la etiqueta de correo electrónico en sí.

Apuntando a un campo específico

En el código de ejemplo anterior, la función number_format se aplica a todos los campos en los que la entrada sea un valor numérico. Si quieres apuntar a un campo específico, puedes hacerlo usando el cuarto argumento $mail_tag, como en este ejemplo:

add_filter( 'wpcf7_mail_tag_replaced',

  function( $replaced, $submitted, $html, $mail_tag ) {
    if ( 'your-number' == $mail_tag->field_name() ) {
      if ( is_numeric( $submitted ) ) {
        $replaced = number_format( $submitted );
      }
    }

    return $replaced;
  },

  10, 4
);

Haciéndolo de esta manera, la función number_format se aplica solo cuando el nombre del campo de la etiqueta de correo es «your-number».

Apuntando a un tipo específico de etiqueta de formulario

Hay variantes del gancho de filtro wpcf7_mail_tag_replaced que se aplican solo a las etiquetas de correo correspondientes a un tipo de etiqueta de formulario específico. Estos ganchos de filtro tienen el tipo de etiqueta de formulario como sufijo.

Por ejemplo, usa el gancho wpcf7_mail_tag_replaced_number cuando quieras apuntar a las etiquetas de formulario de tipo number (número):

add_filter( 'wpcf7_mail_tag_replaced_number',

  function( $replaced, $submitted, $html, $mail_tag ) {
    if ( is_numeric( $submitted ) ) {
      $replaced = number_format( $submitted );
    }

    return $replaced;
  },

  10, 4
);