在unctions.php(主题)、小部件和插件中,哪个最先加载?

时间:2011-08-22 作者:pixeline

客户询问是否可以将他使用的特定旋转木马插件Widgetted化。这意味着我应该在函数中创建一个小部件。调用插件函数的php。这意味着必须首先加载插件的代码,以便WordPress在运行函数时可以使用该函数。php文件已加载,对吗?这样行吗?

3 个回复
最合适的回答,由SO网友:Rarst 整理而成

插件在主题之前加载(是的,我一直在寻找使用此插件的借口):

enter image description here

然而,将两者都视为代码执行点是错误的。在大多数情况下,一切都应该挂接并在不早于init 钩根据Codex widget注册register_widget() 应连接到widget_init.

因为加载顺序对于这种情况并不重要,所以在任何情况下,您都可以在小部件需要的时候加载所有内容。

SO网友:prosti

一种有趣的方法是按执行序列列出文件的所有挂钩。

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);

}
您将得到如下输出:

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
请注意,完整列表根本无法满足每个WPSO帖子30.000个字符的限制,因此我删除了许多操作挂钩。

将上述代码放入插件中。如果你从主题出发functions.php 你抓不到plugins_loaded. 另一个证明插件是在主题之前加载的。

此检查可能有很多好处,但请注意,对于您将调用的不同页面模板,或者如果您在仪表板中,输出将不同。

我只是从/?p=1 或Hello World页面。

如果没有激活任何插件,可以将此代码放入mu-plugins 文件夹

使用可能更好WP FS API, 但这种方式确实很简洁。

SO网友:montrealist

您可以在插件的内部有一个小部件。php文件(并且有一个共享的全局变量,它们都可以使用),如果您想知道的话。这里有一个tutorial with sample code 不久前我偶然发现了。

还有,这里有一个list of actions run during a typical request, 按执行顺序#2和#10建议先加载插件;不确定功能。php。

结束

相关推荐

Functions file mods and CPU

将添加类似于我在下面粘贴到函数的代码。php主题文件会降低Wordpress站点的速度,还是影响CPU?(谢谢)function remove_menu_items() { global $menu; $restricted = array(__(\'Links\'), __(\'Comments\'), __(\'Media\'), __(\'Plugins\'), __(\'Tools\'), __(\'Users\')); end ($menu);&#