¿Qué hace aplicar filtros (...) realmente en WordPress?


Estoy tratando de entender algunas de las funciones en WordPress, pero no puedo entender lo que apply_filters(...) realmente lo hace.

¿Alguien puede aclararme esto con algunos ejemplos?

Author: duncan, 2010-02-16

4 answers

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

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

  • wptexturize
  • convert_smilies
  • convert_chars
  • wpautop
  • shortcode_unautop
  • agregación inicial
  • do_shortcode
 97
Author: Richard M,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-27 11:55:46

respuesta tardía

Breve explicación

apply_filters() interactúa con la matriz global $wp_filters. Básicamente solo comprueba la matriz si el filtro actual (o hook) tiene una acción(/función callback) adjunta y luego la llama.

Explicación larga

Cuando adjuntas una acción/devolución de llamada a un filtro o gancho, simplemente agregas el nombre de devolución de llamada a la matriz de filtros globales. Cuando entonces, en el código (por ejemplo, un archivo de plantilla, núcleo o complemento) ocurre una llamada a do_action() o apply_filters() , luego 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 manejo posterior) en lugar de solo disparar la devolución de llamada. Resumiendo: Los hooks son para insertar datos, mientras que los filtros son para modificar datos.

 26
Author: kaiser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-28 17:34:49

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

  • tag tag parece ser un sinónimo para el nombre del gancho. (Eso no es particularmente intuitivo para mí.)
  • the_content es un ejemplo de un hook, del tipo "filter".
  • el hook_content consiste en múltiples filtros.
  • Los filtros modifican los datos. Básicamente filtran la base de datos, cambiando los datos antes de que los usuarios la vean.
  • Un uso común de apply_filters(), para instance, es aplicar los filtros_content a content content. En este caso, double returns se convertirá en etiquetas <p>, las caras sonrientes se convertirán en iconos, etc.
  • "the_content" es un hook, mientras que "the_content()" es una función.
 18
Author: Marjorie Roswell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-29 21:04:15

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 hooks que ya han sido creados.

 1
Author: Steve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-04 23:32:21