¿Qué es "todo" en isset ($ wp_filter ['all'])

10

Soy un novato en WordPress. Estoy tratando de entender cómo genera las páginas XHTML. Supongo que es la función de do_action( 'hook-name' ) , pero no entiendo la instrucción isset( $wp_filter['all] ) cuando leo la función do_action porque no entiendo cuál es el significado de la palabra all .

¿Es una característica de PHP o una de WordPress?

    
pregunta nguyen mc 13.05.2016 - 19:03

2 respuestas

8

all es solo una cadena que los desarrolladores de WordPress eligieron para comportarse de manera diferente a cualquier otro enganche. Cuando se adjunta a all , su devolución de llamada se activará para todos los demás enlaces .

No pasaría demasiado tiempo mirando la fuente de do_action , solo sé que:

  1. add_action( 'x', 'whatever' ) significará whatever de incendios para do_action( 'x' )
  2. add_action( 'all', 'whatever' ) significará que whatever se dispara para cada do_action , independientemente del nombre del gancho.
respondido por el TheDeadMedic 13.05.2016 - 19:18
5

Condicional if ( isset($wp_filter['all']) ) { que puede encontrar directamente en estas funciones de creación de ganchos:

  • apply_filters
  • apply_filters_ref_array
  • do_action
  • do_action_ref_array

La diferencia entre estos está en el número de argumentos enviados. O bien necesitamos varios argumentos, por lo tanto, ref_array o un solo argumento. La otra diferencia "acción contra filtro" es simple, la acción puede realizar cualquier función / acción, y el nombre del filtro generalmente se reserva para las funciones que toman datos de cadenas y devuelven los datos filtrados.

Bien, estas son las formas de crear ganchos. Y los enganches tienen nombres, y puedes capturar múltiples nombres de funciones en el mismo nombre de enganche (leer: etiqueta).

Pero una vez que define todas las funciones asociadas con ganchos específicos, debe almacenar en algún lugar todos los nombres de ganchos y nombres de funciones asociadas. Es por esto que tenemos el global $wp_filter en WordPress. Si genera esa variable obtendrá algo como ...

Array
(
    [pre_term_name] => Array
        (
            [10] => Array
                (
                    [sanitize_text_field] => Array
                        (
                            [function] => sanitize_text_field
                            [accepted_args] => 1
                        )

                    [wp_filter_kses] => Array
                        (
                            [function] => wp_filter_kses
                            [accepted_args] => 1
                        )

                )

            [30] => Array
                (
                    [_wp_specialchars] => Array
                        (
                            [function] => _wp_specialchars
                            [accepted_args] => 1
                        )

                )

        )

Bueno, no discutamos sobre el nombre de esta variable. Personalmente, lo llamaría diferente, probable $wp_hooks , ya que este nombre no se toma. Sin embargo, si volvemos al historial, encontraremos que do_action es ya que @since 1.2.0 y apply_filters es @since 0.71 (publicado el 9 de junio de 2003). Eso te da una buena explicación de por qué se llama $wp_filter . Es más probable porque los filtros se introdujeron primero en WordPress. Más tarde introdujeron acciones.

Basándonos en lo que dice @TheDeadMedic ...

  

add_action ('todo', 'lo que sea') significará lo que se dispare por cada acción_, independientemente del nombre del gancho.

Me planteé la pregunta ¿por qué necesitamos $wp_filter['all'] ? Sólo algunos ejemplos. Introspección, pruebas y probablemente más características internas del sistema en las futuras versiones de WordPress.

    
respondido por el prosti 13.05.2016 - 20:41

Lea otras preguntas en las etiquetas