¿Qué puedo conectar a after_setup_theme?

2

Me pregunto qué puedo o no debo enlazar a after_setup_theme . Me pregunto porque me han dicho que no debería engancharle wp_enqueue_style , pero he visto otros lugares que lo utilizan para enganchar a wp_enqueue_script aquí: enlace

Por lo que entiendo, esto es solo un tema que depende del tema, por lo que estoy confundido sobre por qué no debería usar wp_enqueue_style en él.

¿Puedo tirar cosas como esta allí también?

add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');

¡Gracias!

    
pregunta Brett 19.08.2012 - 12:44

3 respuestas

5

Piense en la ejecución de WordPress como una serie de peldaños en una escalera: WordPress sube un peldaño, luego el siguiente, luego el siguiente, y así sucesivamente.

Piense en los ganchos de acción como los peldaños mismos. Aquí hay una lista (levemente abreviada, creo) de esas acciones, o "renglones" ejecutados durante una solicitud típica de WordPress.

Por lo tanto, una llamada add_action() es simplemente una instrucción para ejecutar una función en un escalón específico en la escalera. Mientras haga que add_action() llame en un renglón anterior a la ejecución en la que desea que la función especificada ejecute , entonces no importa, per se el renglón que usas para hacer la llamada add_action() . Sin embargo, hay razones para usar peldaños específicos para ejecutar funciones .

Para tomar su ejemplo: el archivo functions.php de un Tema se ejecuta en (creo) after_setup_theme . Por lo tanto, simplemente no puede usar un tema para agregar una acción a cualquier peldaño anterior a after_setup_theme , porque WordPress ya ejecutó esas acciones (es decir, WordPress ya ha escalado esos "peldaños" en la escala ).

Si intenta ejecutar wp_enqueue_script() en una devolución de llamada enganchada en una acción antes de init , WordPress generará un aviso de _doing_it_wrong() , porque wp_enqueue_script() no debe ejecutarse antes de init , y lo más correcto debería ejecutarse en wp_enqueue_scripts (front end) o admin_enqueue_scripts-{hook} (admin).

Sin embargo:

  

¿Puedo tirar cosas como esta allí también?

add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');

Todas estas acciones están perfectamente bien cuando se llama a after_setup_theme , ya que todas las acciones especificadas se activan más tarde que after_setup_theme . Con add_action() , simplemente le está diciendo a WordPress, " ponga en cola esta devolución de llamada en la acción especificada ". Con remove_action() , simplemente le está diciendo a WordPress " eliminar esta devolución de llamada de la acción especificada ".

Editar

En re:

  

Gran respuesta - gracias. Entiendo que la mayoría, pero un poco confundido, ¿por qué todas mis llamadas a enlaces con add_action y remove_action están bien, pero la llamada a wp_enqueue_scripts no lo está? Todos ellos se disparan después de after_setup_theme . Sé que dijiste que es porque no puedo ejecutar wp_enqueue_scripts antes de init ; aunque sin que me digas eso, ¿cómo lo sabría? Por ejemplo, ¿cómo puedo saber si hay algo más que no se puede ejecutar antes que otra cosa?

Debido a que add_action() simplemente pone en cola una devolución de llamada, dentro de la cual se ejecutan las funciones. Pero las funciones como wp_enqueue_script() o wp_enqueue_style() son en realidad funciones , que ejecuta donde sea que las llame.

    
respondido por el Chip Bennett 19.08.2012 - 15:07
2

Recomendaría verificar cómo otros temas usan after_setup_theme hook para obtener una idea general, verifique las funciones . php de temas como Twenty Eleven y Underscores (_s).

after_setup_theme se utiliza principalmente para cargar archivos de funcionalidad de temas, registrar el soporte para varias funciones como, publicar miniaturas y formatos de correos, cargar archivos de traducción, etc. También puede registrar acciones y filtrar en la configuración de temas, pero me gusta guardarlos cerca de las funciones de devolución de llamada.

Las funciones

wp_enqueue_script() y wp_enqueue_style() deben estar conectadas a la acción apropiada - wp_enqueue_scripts

    
respondido por el Mamaduka 19.08.2012 - 13:55
2

No debes enganchar las llamadas de la función wp_enqueue_style a eso porque existen otros ganchos de acción que son más apropiados.

Específicamente, si necesita hacer una puesta en cola en el extremo frontal del sitio, debe enganchar al enganche "wp_enqueue_scripts". Si necesita poner en cola algo en el lado del administrador del sitio, debe enganchar al gancho "admin_enqueue_scripts".

    
respondido por el Otto 19.08.2012 - 14:36

Lea otras preguntas en las etiquetas