问题描述
客户询问他使用的特定转盘插件是否可以插件。这意味着我应该在调用插件功能的 functions.php 中创建一个小工具。这意味着插件的代码必须首先被加载,以便函数在函数 functions.php 文件加载时可用于 wordpress,对吧?会工作吗
最佳解决方案
插件在主题之前加载 (是的,我一直在寻找使用这个):
但是考虑到代码执行点是错误的。大多数情况下,一切都应该早于 init
钩挂钩并执行。根据 Codex 小工具注册与 register_widget()
应该挂钩到 widget_init
。
由于这种负载顺序对于这种情况并不重要,因此在任何情况下,您将拥有时间窗口小工具需要的所有东西。
次佳解决方案
一个有趣的方法是以执行顺序列出所有钩子到文件。
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
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.
这个检查的可能的好处是很多,但是请注意,您将要调用的不同页面模板的输出将不同,或者您在仪表板中。
我简单地从/?p=1
或 Hello World 页面调用。
如果您没有激活一个插件,可以将此代码放入 mu-plugins
文件夹中。
使用 WP FS API 可能会更好,但是这样做很简洁。
第三种解决方案
你可以在插件的.php 文件中有一个小工具 (并且有一个共享的全局变量,它们都可以使用),如果这是你所要求的。这是一个 tutorial with sample code 我偶然发现。
另外,这是一个执行顺序的 list of actions run during a typical request 。 #2 和#10 表示插件首先加载; 不知道 functions.php 。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。