在WP-Admin中预安装小部件

时间:2012-08-10 作者:George Grigorita

当用户激活admin widgets区域中的TwentyEleven主题时,用户已经在主侧栏中填充了一些标准小部件。有没有人能解释一下,或者给我指出一个正确的方向,告诉我如何在另一个主题上为我的小部件实现相同的行为?

1 个回复
最合适的回答,由SO网友:Tom Auger 整理而成

这实际上不是由主题安装的。这些小部件是在您第一次安装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.phpwp_install_defaults(). 此功能将supplant 升级中定义的wp\\u install\\u defaults()函数。从复制整个wp_install_defaults() 功能来自upgrade.php 并将其粘贴到install.php bootstrap,作为一种确保您想要保留的好东西仍然存在的方法,因为如果您定义wp\\u install\\u defaults()函数,它将完全替换everything 在默认函数中

结束

相关推荐

Widgets in PHP files?

有没有可能让Wordpress上的每个小部件都以不同的方式运行。php文件我有一个包含12个元素的页面,我想让每个元素都成为一个小部件,以便以后更容易管理/编辑它们,但如果它来自php页面,而不是来自管理面板上的代码块,则会更好。