wp_widgets_init()
云策文档标注
概述
wp_widgets_init() 是 WordPress 初始化时注册所有默认小部件的核心函数。它在博客已安装的条件下,通过 register_widget() 注册一系列内置小部件,并在完成后触发 'widgets_init' 钩子。
关键要点
- 函数在 WordPress 启动时自动调用,用于注册默认小部件如 WP_Widget_Pages、WP_Widget_Calendar 等。
- 注册前检查 is_blog_installed() 确保 WordPress 已安装,否则直接返回。
- 注册 WP_Widget_Links 小部件取决于 get_option('link_manager_enabled') 选项是否启用。
- 所有默认小部件注册完成后,通过 do_action('widgets_init') 触发钩子,允许开发者添加自定义小部件或执行其他操作。
- 函数自 WordPress 2.2.0 版本引入,是 widgets_init 动作的标准实现。
代码示例
function wp_widgets_init() {
if ( ! is_blog_installed() ) {
return;
}
register_widget( 'WP_Widget_Pages' );
register_widget( 'WP_Widget_Calendar' );
register_widget( 'WP_Widget_Archives' );
if ( get_option( 'link_manager_enabled' ) ) {
register_widget( 'WP_Widget_Links' );
}
register_widget( 'WP_Widget_Media_Audio' );
register_widget( 'WP_Widget_Media_Image' );
register_widget( 'WP_Widget_Media_Gallery' );
register_widget( 'WP_Widget_Media_Video' );
register_widget( 'WP_Widget_Meta' );
register_widget( 'WP_Widget_Search' );
register_widget( 'WP_Widget_Text' );
register_widget( 'WP_Widget_Categories' );
register_widget( 'WP_Widget_Recent_Posts' );
register_widget( 'WP_Widget_Recent_Comments' );
register_widget( 'WP_Widget_RSS' );
register_widget( 'WP_Widget_Tag_Cloud' );
register_widget( 'WP_Nav_Menu_Widget' );
register_widget( 'WP_Widget_Custom_HTML' );
register_widget( 'WP_Widget_Block' );
do_action( 'widgets_init' );
}注意事项
- 开发者可以通过 'widgets_init' 钩子添加自定义小部件,确保在默认小部件注册后执行。
- WP_Widget_Links 的注册依赖于链接管理器选项,需在设置中启用才能使用。
- 函数内部使用多个核心函数如 register_widget() 和 do_action(),理解这些函数有助于扩展小部件功能。
原文内容
Registers all of the default WordPress widgets on startup.
Description
Calls ‘widgets_init’ action after all of the WordPress widgets have been registered.
Source
function wp_widgets_init() {
if ( ! is_blog_installed() ) {
return;
}
register_widget( 'WP_Widget_Pages' );
register_widget( 'WP_Widget_Calendar' );
register_widget( 'WP_Widget_Archives' );
if ( get_option( 'link_manager_enabled' ) ) {
register_widget( 'WP_Widget_Links' );
}
register_widget( 'WP_Widget_Media_Audio' );
register_widget( 'WP_Widget_Media_Image' );
register_widget( 'WP_Widget_Media_Gallery' );
register_widget( 'WP_Widget_Media_Video' );
register_widget( 'WP_Widget_Meta' );
register_widget( 'WP_Widget_Search' );
register_widget( 'WP_Widget_Text' );
register_widget( 'WP_Widget_Categories' );
register_widget( 'WP_Widget_Recent_Posts' );
register_widget( 'WP_Widget_Recent_Comments' );
register_widget( 'WP_Widget_RSS' );
register_widget( 'WP_Widget_Tag_Cloud' );
register_widget( 'WP_Nav_Menu_Widget' );
register_widget( 'WP_Widget_Custom_HTML' );
register_widget( 'WP_Widget_Block' );
/**
* Fires after all default WordPress widgets have been registered.
*
* @since 2.2.0
*/
do_action( 'widgets_init' );
}
Hooks
- do_action( ‘widgets_init’ )
-
Fires after all default WordPress widgets have been registered.
Changelog
| Version | Description |
|---|---|
| 2.2.0 | Introduced. |