¿Qué hace apply_filters (…) en WordPress?

123

Estoy tratando de entender algunas de las funciones en WordPress, pero no puedo entender qué hace en realidad apply_filters (...) .

¿Alguien puede aclararme esto con algunos ejemplos?

Tim
fuente
12
Impresionante: dev.themeblvd.com/tutorial/filters
Nabil Kadimi
Una nota que apply_filters()es un nombre increíblemente engañoso para la función, ya que aplica filtros y acciones
vinculadas
@NabilKadimi, gran sugerencia, dev.themeblvd.com/tutorial/filters/#highlighter_604585 , pero cuando esta función no acepta ningún argumento (haga clic en el enlace para ver de qué función estoy hablando), ¿cómo se modifica la variable $ output , como describe en su siguiente sección de código?
Ramesh Pareek
@RameshPareek Su enlace no parece funcionar como se esperaba, utilice una esencia de Github.
Nabil Kadimi
¡lo siento! Desplácese hacia abajo hasta el Ejemplo 1: Conceptos básicos en esa página.
Ramesh Pareek

Respuestas:

104

apply_filters($tag, $value)pasa el argumento 'valor' a cada una de las funciones 'enganchadas' (usando add_filter) en la 'etiqueta' del filtro especificado. Cada función realiza algún procesamiento sobre el valor y devuelve un valor modificado para pasar a la siguiente función en la secuencia.

Por ejemplo, por defecto (en WordPress 2.9) el the_contentfiltro pasa el valor a través de la siguiente secuencia de funciones:

  • wptexturizar
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • prepend_attachment
  • do_shortcode
Richard M
fuente
También recuerde hacer eco de cualquier cosa cuyo valor no esté usando si parece que apply_filters($value)está borrando un valor ...
MrMesees
32

respuesta tardía

Breve explicación

apply_filters() interactúa con el global $wp_filters matriz. Básicamente, solo verifica la matriz si el filtro actual (o gancho) tiene una acción (/ función de devolución de llamada) adjunta y luego la llama.

Explicación larga

Cuando adjunta una devolución de llamada / acción a un filtro o gancho, simplemente agrega el nombre de la devolución de llamada a la matriz de filtros globales. Entonces, en el código (por ejemplo, una plantilla, núcleo o archivo de complemento) una llamada a do_action()o apply_filters()ocurre, WordPress buscó a través de la matriz y llama a la devolución de llamada. Lo único más especial con los filtros que con los ganchos es que devuelve el valor (para un mayor manejo) en lugar de simplemente disparar la devolución de llamada. En resumen: los Hooks son para insertar datos, mientras que los filtros son para modificar datos.

emperador
fuente
19

Esto es lo que estoy obteniendo al considerar la respuesta más popular y los recursos adicionales:

  • $ tag parece ser un sinónimo del nombre del gancho. (Eso no es particularmente intuitivo para mí).
  • the_content es un ejemplo de gancho, del tipo "filtro".
  • the_content hook consta de varios filtros.
  • Los filtros modifican los datos. Básicamente filtran la base de datos, cambiando los datos antes de que los usuarios los vean.
  • Un uso común de apply_filters (), por ejemplo, es aplicar filtros the_content a $ content. En este caso, los retornos dobles se convertirán en<p> etiquetas, las caritas sonrientes se convertirán en iconos, etc.
  • "the_content" es un gancho, mientras que "the_content ()" es una función.
Marjorie Roswell
fuente
1

En los términos más básicos, apply_filters se usa para inicializar un gancho de filtro ... add_filter asigna una nueva función a los ganchos que ya se han creado.

Steve
fuente
3
Lo sentimos, esto es al revés: apply_filters () llama a los hooks de filtro que ya están inicializados y add_filter () es la llamada que crea un hook de filtro. Sé que en realidad quisiste decir esto, ¡pero tienes las funciones al revés!
Brian C
apply_filters ($ etiqueta, $ valor); le permite crear un lugar en su código donde luego puede permitir que el valor $ que pase se enganche y modifique usando add_filter ();
Styledev