Entre functions.php, widgets et plugins, lequel est chargé en premier?
3 réponses
- votes
-
- 2011-08-23
Lesplugins sont chargésjuste avant lethème (oui,j'ai cherché uneexcusepour l'utiliser):
Cependant,ilestfaux depenser à l'un ou l'autre commepoint d'exécution de code.Dans laplupart des cas,tout doit être accrochéet exécuté auplustôt au hook
init
.Selon l'enregistrement du widget Codex avecregister_widget()
doit être connecté àwidget_init
.Étant donné que l'ordre de chargementn'apas d'importance dans ce cas,vous aureztout chargé aumoment où le widgeten abesoin danstous les cas.
The plugins are loaded right before theme (yes, I've been looking for excuse to use this):
However it is wrong to think about either as point of code execution. For most cases everything should be hooked and executed no earlier than
init
hook. According to Codex widget registration withregister_widget()
should be hooked towidget_init
.Because of that order of load doesn't matter for this case, you will have everything loaded by the time widget needs it in any case.
-
La charge debase WPn'aurajamais de sens.WP core load will never make any sense.
- 3
- 2015-08-27
- gagarine
-
Y a-t-il une chance quenouspuissions obtenir ungraphiquemis àjouren 2016?;-)Any chance we can get an updated chart in 2016? ;-)
- 8
- 2016-01-10
- jgraup
-
@jgraup vous dites que comme les choses changent dans lenoyau de WordPress ... :)@jgraup you say that like things change in WordPress core... :)
- 9
- 2016-01-10
- Rarst
-
@Rarst,touché ;-)@Rarst, touché ;-)
- 1
- 2016-01-10
- jgraup
-
Justepour être sûr de comprendre cegraphique - Les sections qui s'étendent surplus d'une des 3 colonnesprincipales sont communes àtous?Alorsje suis une ligne verticale descendanteet jetraverse les événementspar ordre chronologiquepour une demande donnée?Just so I'm sure I understand this chart - The sections that extend across more than one of the 3 main columns are common to all? So I'm following a vertical line downward and crossing the events in chronological order for a given request?
- 0
- 2018-10-11
- Isaac Lubow
-
@IsaacLubow oui,les choses dansplus d'une colonne s'exécutentpour ces contextes respectifs,comme vouspouvez le voir,lamêmepartieimportante de la charge debaseesttoujoursimpliquéepourtoute demande.@IsaacLubow yes, the things in more than one column run for those respective contexts, as you can see the same significant chunk of core load is always involved for any request.
- 2
- 2018-10-15
- Rarst
-
- 2016-12-24
Une approcheintéressante serait de listertous les hooks d'unfichier dans une séquence d'exécution.
add_action( 'all', '_20161224_printer' ); function _20161224_printer( $r ){ $line = microtime(true)*10000 . ' ' . $r . "\n"; $fp = fopen( ABSPATH . 'hooks.txt', 'a+'); fwrite($fp, $line); fclose($fp); }
Et vous obtiendrez le résultat comme ceci:
14825992300742 pre_option_blog_charset 14825992300743 option_blog_charset 14825992300743 plugins_loaded 14825992300744 load_default_widgets 14825992300745 load_default_embeds 14825992300745 wp_audio_extensions 14825992300745 wp_audio_embed_handler 14825992300746 wp_video_extensions 14825992300746 wp_video_embed_handler 14825992300746 sanitize_comment_cookies 14825992300747 pre_option_permalink_structure 14825992300747 option_permalink_structure 14825992300748 pre_option_wp_user_roles 14825992300748 option_wp_user_roles 14825992300749 wp_roles_init 14825992300749 setup_theme 14825992300749 pre_option_template 14825992300750 option_template 14825992300750 template 14825992300750 theme_root 14825992300751 template_directory 14825992300751 pre_option_stylesheet 14825992300751 option_stylesheet 14825992300751 stylesheet 14825992300752 theme_root 14825992300752 stylesheet_directory 14825992300752 pre_option_WPLANG 14825992300753 query 14825992300754 default_option_WPLANG 14825992300755 locale 14825992300755 override_unload_textdomain 14825992300755 unload_textdomain 14825992300755 override_load_textdomain 14825992300756 load_textdomain 14825992300756 load_textdomain_mofile 14825992300756 locale ... many many more action hooks ... 14825992302886 wp_parse_str 14825992302886 nonce_life 14825992302886 salt 14825992302886 wp_parse_str 14825992302887 esc_html 14825992302887 logout_url 14825992302887 clean_url 14825992302887 gettext 14825992302887 wp_after_admin_bar_render 14825992302888 pre_option_template 14825992302888 option_template 14825992302888 template 14825992302888 theme_root 14825992302888 template_directory 14825992302889 parent_theme_file_path 14825992302889 shutdown
Notez que la liste complètene pouvaittout simplementpas correspondre à la limite de 30 000 caractèresparpublication WPSO,j'ai donc supprimé denombreux hooks d'action.
Mettez le code ci-dessus dans unplugin. Si vousfaites cela àpartir desthèmes
functions.php
,vousn'attraperezpasplugins_loaded
. Une autrepreuve que lesplugins sont chargés avant lethème.Les avantagespossibles de cette vérification sontnombreux,mais veuilleznoter que la sortie sera différentepour les différentsmodèles depage que vous appellerez,ou si vous êtes dans untableau debord.
J'ai simplement appelé cela àpartir de
/?p=1
ou de lapage Hello World.Si vousn'avezpas un seulplugin activé,vouspouvezmettre ce code dans le dossier
mu-plugins
.Ilpeut êtrepréférable d'utiliser API WP FS ,mais cetteméthodeest vraiment concise.
One interesting approach would be to list all hooks to a file in a sequence of execution.
add_action( 'all', '_20161224_printer' ); function _20161224_printer( $r ){ $line = microtime(true)*10000 . ' ' . $r . "\n"; $fp = fopen( ABSPATH . 'hooks.txt', 'a+'); fwrite($fp, $line); fclose($fp); }
And you will get the output like this:
14825992300742 pre_option_blog_charset 14825992300743 option_blog_charset 14825992300743 plugins_loaded 14825992300744 load_default_widgets 14825992300745 load_default_embeds 14825992300745 wp_audio_extensions 14825992300745 wp_audio_embed_handler 14825992300746 wp_video_extensions 14825992300746 wp_video_embed_handler 14825992300746 sanitize_comment_cookies 14825992300747 pre_option_permalink_structure 14825992300747 option_permalink_structure 14825992300748 pre_option_wp_user_roles 14825992300748 option_wp_user_roles 14825992300749 wp_roles_init 14825992300749 setup_theme 14825992300749 pre_option_template 14825992300750 option_template 14825992300750 template 14825992300750 theme_root 14825992300751 template_directory 14825992300751 pre_option_stylesheet 14825992300751 option_stylesheet 14825992300751 stylesheet 14825992300752 theme_root 14825992300752 stylesheet_directory 14825992300752 pre_option_WPLANG 14825992300753 query 14825992300754 default_option_WPLANG 14825992300755 locale 14825992300755 override_unload_textdomain 14825992300755 unload_textdomain 14825992300755 override_load_textdomain 14825992300756 load_textdomain 14825992300756 load_textdomain_mofile 14825992300756 locale ... many many more action hooks ... 14825992302886 wp_parse_str 14825992302886 nonce_life 14825992302886 salt 14825992302886 wp_parse_str 14825992302887 esc_html 14825992302887 logout_url 14825992302887 clean_url 14825992302887 gettext 14825992302887 wp_after_admin_bar_render 14825992302888 pre_option_template 14825992302888 option_template 14825992302888 template 14825992302888 theme_root 14825992302888 template_directory 14825992302889 parent_theme_file_path 14825992302889 shutdown
Note the full list simply could not fit the 30.000 characters limitation per WPSO post, so I removed many action hooks.
Put the above code inside a plugin. If you do that from the themes
functions.php
you will not catchplugins_loaded
. One another proof the plugins are loaded before the theme.The possible goodies of this check are many, but please note the output will be different for different page templates you will call, or if you are in a dashboard.
I simply called this from
/?p=1
or Hello World page.If you don't have a single plugin activated, you may put this code into
mu-plugins
folder.It may be better to use WP FS API, but this way is realy concise.
-
À l'intérieur desplugins wp-admin sont chargés après lethème ou dans l'ordre de l'installation ...et dans lespluginsfrontaux sont chargés avant lethème ...Inside wp-admin plugins are loaded after the theme or in the order of the installation... and in front-end plugins are loaded before the theme...
- 0
- 2017-04-17
- Sahu V Kumar
-
- 2011-08-22
Vouspouvez avoir un widget dans lefichier .php duplugin (et avoir une variableglobalepartagée qu'ilspeuventtous les deux utiliser),si c'est ce que vous demandez.Voici un tutoriel avec unexemple de code J'aitrébuchéil y a quelquetemps.
Aussi,voici une liste des actionsexécutées lors d'une requêtetypique ,dans l'ordre d'exécution.# 2et # 10 suggèrent que lesplugins se chargenten premier;pas sûr defunctions.php.
You can have a widget inside the plugin's .php file (and have a shared global variable which they can both use), if that's what you're asking. Here's a tutorial with sample code I stumbled upon a while back.
Also, here's a list of actions run during a typical request, in order of execution. #2 and #10 suggest that plugins load first; not sure about functions.php.
-
Correct,lesplugins sont chargés avant lesfichiers dethème.Si leplugininclut du code,maispas le widget souhaité,ilestpossible de définir le widget dans lefunctions.php de votrethème.Correct, plugins are loaded before theme files. If the plugin includes code, but not the widget you want, it is possible to define the widget in your theme's functions.php.
- 1
- 2011-08-22
- goldenapples
Le client demande si unplugin de carrousel spécifique qu'il utilisepeut être widgetisé.Cela signifie queje dois créer un widget à l'intérieur defunctions.php qui appelle lafonction duplugin.Cela signifie que le code duplugin doit être chargéen premierpour que lafonction soit disponible sur WordPress lorsque lefichierfunctions.phpest chargé,non?Celafonctionnerait-il?