这实际上不是由主题安装的。这些小部件是在您第一次安装WordPress时设置的。只是如果你的主题不支持小部件,你就看不到它们。
WordPress中“安装”这些小部件的部分可以在中找到wp-admin/includes/upgrade.php
函数内部wp_install_defaults
. 下面是代码的相关部分。您应该能够改装到自己的小部件:
// Set up default widgets for default theme.
update_option( \'widget_search\', array ( 2 => array ( \'title\' => \'\' ), \'_multiwidget\' => 1 ) );
update_option( \'widget_recent-posts\', array ( 2 => array ( \'title\' => \'\', \'number\' => 5 ), \'_multiwidget\' => 1 ) );
update_option( \'widget_recent-comments\', array ( 2 => array ( \'title\' => \'\', \'number\' => 5 ), \'_multiwidget\' => 1 ) );
update_option( \'widget_archives\', array ( 2 => array ( \'title\' => \'\', \'count\' => 0, \'dropdown\' => 0 ), \'_multiwidget\' => 1 ) );
update_option( \'widget_categories\', array ( 2 => array ( \'title\' => \'\', \'count\' => 0, \'hierarchical\' => 0, \'dropdown\' => 0 ), \'_multiwidget\' => 1 ) );
update_option( \'widget_meta\', array ( 2 => array ( \'title\' => \'\' ), \'_multiwidget\' => 1 ) );
update_option( \'sidebars_widgets\', array ( \'wp_inactive_widgets\' => array ( ), \'sidebar-1\' => array ( 0 => \'search-2\', 1 => \'recent-posts-2\', 2 => \'recent-comments-2\', 3 => \'archives-2\', 4 => \'categories-2\', 5 => \'meta-2\', ), \'sidebar-2\' => array ( ), \'sidebar-3\' => array ( ), \'sidebar-4\' => array ( ), \'sidebar-5\' => array ( ), \'array_version\' => 3 ) );
因此,您(可能)想要做的是在第一次激活主题时运行类似于上面列出的代码。我认为,如果您在某些领域强制使用某些小部件,这可能会导致一些哲学问题。这无疑提出了一个问题:“这些应该是小部件吗?还是应该烘焙到您的
siedbars.php
文件,如果它们不是真正可选的?“小部件是由管理员添加或删除的,主题运行不需要小部件。
无论如何,这是官方的立场,但如果你仍然坚持,看看\'after_switch_theme\'
钩子作为主题的潜在激活钩子。您可能只想运行一次,所以在“激活”主题后在数据库上设置一个选项,并在注册激活挂钩之前检查该选项。
应该注意的是,对于任何一个偶然发现这个小片段的人来说,如果您想覆盖WordPress第一次运行时安装的内容,您可以:
在中创建文件wp-content/install.php
在该文件中,定义一个名为wp_install_defaults()
. 此功能将supplant 升级中定义的wp\\u install\\u defaults()函数。从复制整个wp_install_defaults()
功能来自upgrade.php
并将其粘贴到install.php
bootstrap,作为一种确保您想要保留的好东西仍然存在的方法,因为如果您定义wp\\u install\\u defaults()函数,它将完全替换everything 在默认函数中