函数文档

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.