Explicación de la función apply_filters y sus variables

15

Estoy aprendiendo a crear formularios html usando PHP tomando un ejemplo del complemento "registro de formulario simple".

Estoy viendo este código:

$form .= apply_filters('simplr-reg-instructions', __('Please fill out this form to sign up for this site', 'simplr-reg'));

¿Puede por favor explicar qué está pasando aquí? ¿Qué hace la función? ¿Por qué es necesario 'simplr-reg-instructions' y 'simplr-reg'?

¿Por qué esta línea no puede ser simplemente:

$form .= 'Please fill out this form to sign up for this site' ;

He leído la referencia de la función pero aún no puedo resolverlo.

    
pregunta Ash 06.05.2011 - 17:56

2 respuestas

21

Esa línea está usando dos funciones diferentes que necesitan dos explicaciones separadas.

__ ()

Esta es una función de traducción. Si la configuración se realiza correctamente, se traducirá el primer parámetro de una lista de cadenas traducidas previamente. Si una instalación tiene un archivo con una traducción compilada para que la use esta función, la usará. Por supuesto, el complemento tiene que empaquetar su propia traducción, de ahí el segundo parámetro. simplr-reg le dice a __() que la traducción de la cadena 'Please fill out this form to sign up for this site' debería estar en el archivo de traducción asociado con 'simplr-reg' (esto se hace anteriormente en el complemento mediante la función load_plugin_textdomain() ).

La función devuelve la traducción. Si no hay traducción para devolver (por ejemplo, el idioma actual no tiene una traducción compilada, la cadena no tiene una traducción compilada para ese paquete, etc.), se devuelve la entrada original.

Entonces, para un sitio de WordPress en inglés, __( 'This', 'simplr-reg' ) es funcionalmente igual que 'This' . Para obtener más información sobre l10n (Localización), lea sobre esto en el códice:

enlace

apply_filters ()

Esta función le permite filtrar los valores utilizados por el complemento según sea necesario. Este es uno de los conceptos principales para comprender como desarrollador de complementos. WordPress se extiende a través de enlaces, que básicamente son puntos de acceso que le permiten cronometrar la ejecución de las acciones de su complemento y / o manipular la información / datos que utiliza WordPress, etc.

Para manipular datos como el fragmento de código que has preguntado, usarías la función add_filter() . Aquí hay un ejemplo básico de cómo funciona esto:

add_filter( 'simplr-reg-instructions', 'wpse16573_my_filter' );

Probablemente reconocerás el primer argumento allí. Es el mismo que se usa en add_filter arriba. Este es el nombre del gancho. El segundo argumento es el filtro de devolución de llamada. Debe ser una devolución de llamada válida a una función ( lea más acerca de las devoluciones de llamada aquí ). Esa línea de código dice "Cuando se ejecuta 'simplr-reg-instructions' hook, ejecute la función con la devolución de llamada que proporcioné". apply_filters() ejecuta el gancho encontrado en su primer argumento, que esencialmente significa "ejecutar todas las funciones registradas para este gancho". apply_filters luego pasa todos los otros argumentos (en este caso, 'Please fill out this form to sign up for this site' ) a las funciones en ese filtro. Por lo tanto, la devolución de llamada que usé anteriormente debería tener este aspecto:

function wpse16573_my_filter( $text ){
  $text = "<strong>$text</strong>";
  return $text;
}

Hay dos tipos de enlaces en WordPress: filtros (el tipo que estamos usando aquí) y acciones. La principal diferencia entre los dos es que los filtros esperan que devuelvas algo y las acciones no. Entonces, para este filtro, mi ejemplo anterior agrega un poco de html alrededor de 'Please fill out this form to sign up for this site' y lo devuelve.

Lea más sobre acciones y enlaces aquí:

enlace

    
respondido por el John P Bloch 06.05.2011 - 18:27
5

Aquí tienes dos funciones diferentes apply_filters y __()

La función

apply_filters es la forma de WordPress de permitirle cambiar / editar el valor de las variables usando sus propias funciones de devolución de llamada y la función add_filter . acepta muchos argumentos pero los importantes son los dos primeros:

$something = apply_filters( $tag, $value, $var ... );

$ tag es el nombre del gancho de filtro que se usa en add_filter , por ejemplo:

add_filter($tag,callback_function);

$ valor es el valor real que podrá cambiar o editar.

$ var son variables que su función de devolución de llamada puede usar, una o más.

La función

__() se utiliza para las traducciones:

__($message,$text_domain);

$ mensaje es el mensaje real a traducir.

$ text_domain es la etiqueta de dominio de texto utilizada para cargar el complemento o la traducción del tema con load_plugin_textdomain()

¿Qué hace?

Busca en el módulo de localización la traducción de $ message y pasa la traducción a la declaración de devolución de PHP. Si no se encuentra ninguna traducción para $ mensaje, simplemente devuelve $ mensaje.

Así que ahora las dos funciones en tu caso funcionan de la misma manera, los apply_filters enviarán cualquier función de devolución de llamada asociada con simplr-reg-instructions filter hook el valor traducido (si existe) de 'Rellene este formulario para registrarse en este sitio' usando el dominio de texto de simplr-reg

    
respondido por el Bainternet 06.05.2011 - 18:23

Lea otras preguntas en las etiquetas