¿Cómo funcionan realmente los filtros y los ganchos en WordPress?
Estoy preguntando sobre algo avanzado. ¿Cómo se implementa en PHP? Por ejemplo, ¿cómo recopila todos los ganchos de los diferentes complementos y los "conecta" a los ganchos centrales, etc.
Respuestas:
Visión general
Básicamente, la " API de complementos " , que convoca filtros y ganchos, consta de las siguientes funciones:
apply_filters()
- ejecutardo_action
- ejecutarapply_filters_ref_array()
- ejecutardo_action_ref_array()
- ejecutaradd_filter()
- agregar a la pilaadd_action()
- agregar a la pilaInternos básicos
En general, hay un par de globales (qué más en el mundo de WordPress) involucrados:
El primero
$wp_filter
es un globalArray
que contiene todos los nombres de filtro como submatrices. Cada una de esas submatrices contiene aún más submatrices que son devoluciones de llamada convocadas bajo una matriz de prioridad.Breve en profundidad
Entonces, cuando se llama a una función de ejecución , WordPress busca en esas matrices globales las claves con ese nombre. Luego, las devoluciones de llamada adjuntas se ejecutan prioridad tras prioridad. Lo único que sucede por adelantado son las devoluciones de llamada conectadas al
all
filtro.Cuando agrega una devolución de llamada usando
add_action
oadd_filter
, WordPress primero calcula una identificación "única" para no sobrescribir las devoluciones de llamada ya adjuntas.Luego agrega su devolución de llamada a la
global $wp_filter
pila:Como puede ver, la matriz secundaria principal es
$tag
(o nombre de acción / filtro), luego todo se convoca bajo una prioridad específica, y luego la cadena de devolución de llamada / ID "única" se utiliza como clave.Más tarde, cuando se llama a un filtro, que ocurre con el
$tag
/ action- / filter-name, se busca la matriz y se llaman las devoluciones de llamada. Como lo está utilizandocall_user_func_array
, realmente no importa cuántos argumentos se adjunten. WordPress lo resuelve por sí solo.fuente
Los ganchos se incluyen en los archivos principales de WordPress y en algunos archivos de temas principales. Le permiten enganchar contenido en una ubicación específica del archivo.
Un ejemplo es el gancho wp_head en WordPress. Puede usar este gancho en el tema de su hijo para agregar contenido en esa ubicación '
Ejemplo:
Algunos temas premium también incluyen ganchos de acción que puede usar en un tema secundario para hacer lo mismo. Aquí hay un mapa visual que incluye todos los ganchos de acción y la posición en la que generan su contenido en el marco del tema Genesis.
Ejemplo:
Así es como se ve el gancho si abre el archivo header.php en el marco del tema Genesis:
Aquí hay una lista de ganchos de WordPress que puede usar de muchas maneras.
Los filtros le permiten modificar la salida de una función existente y se incluye tanto en los archivos principales de WordPress como en algunos marcos de temas principales como Genesis.
Aquí hay una lista de los filtros que puede usar con Genesis Design Framework
Aquí hay una lista de los filtros incluidos en WordPress
Aquí hay un ejemplo de cómo puede usar un filtro en un marco temático como Génesis:
El código anterior se puede usar en un tema secundario para modificar el autor dice el texto en sus comentarios. Funciona en cualquier tema.
Aquí hay otro ejemplo que personaliza la longitud de extractos a 50 palabras:
Encontrará la función the_excerpt () en el archivo wp-includes / post-template.php.
Así es como se ve:
También puede usar ganchos y filtros en complementos para hacer exactamente lo mismo y el código no se perderá cuando actualice el tema principal o WordPress.
Básicamente, los ganchos y filtros le permiten personalizar y modificar tanto WordPress como su tema principal sin editar los archivos principales de WordPress o sus archivos de tema principal.
Es significativamente más fácil personalizar un tema secundario cuando el marco del tema principal incluye ganchos y filtros porque nunca necesita editar los archivos de plantilla de temas principales. De esta manera, también puede cambiar de forma segura los temas.
fuente