仅在最初创建站点后才会预置小部件

时间:2011-04-26 作者:marpa

我只想在最初创建网站后,使用我的主题中包含的功能预设一些小部件(我的主题是WordPress实例中所有新网站的默认主题)。

当用户激活我的主题时,我不希望我的预设小部件替换现有小部件,除非它们的现有小部件区域与我的主题中的小部件区域不同。

我已经将我的widgets\\u init函数建模为主题框架中的函数。Thematic使用以下条件添加预设小部件:

if ( isset( $_GET[\'activated\'] ) )
因此,当主题被激活时,它会清除现有的小部件并添加自己的预设小部件。。。我希望我的主题使用现有的小部件,如果它们位于我的主题支持的小部件区域(即,用户从一个子主题切换到另一个子主题,这两个子主题都使用我的主题作为其父主题)

我知道有register_activation_hook 但这似乎是为插件功能而设计的,而不是为主题中包含的功能而设计的。。。以下是问题:

是否有仅在最初创建站点后才运行的操作?

或者,我可以检查他们的情况,以确定是否刚刚创建了一个站点?

1 个回复
SO网友:Chip Bennett

为什么不使用the_widget(), a的内部if ( ! dynamic_sidebar( \'sidebar-name\' ) ) 有条件的

e、 g。

<?php if ( !dynamic_sidebar( \'sidebar-right\' ) ) {

$widgetsidebarrightargs = array(
    \'before_widget\' => \'<div class="widget">\',
    \'after_widget\' => \'</div>\',
    \'before_title\' => \'<div class="title widgettitle">\',
    \'after_title\' => \'</div>\'
);

the_widget(\'WP_Widget_Calendar\' , \'title=\' , $widgetsidebarrightargs );
the_widget( \'oenology_widget_linkrollbycat\' , \'title=Oenology Links by Cat\' , $widgetsidebarrightargs );
the_widget(\'WP_Widget_Meta\' , \'title=Meta\' , $widgetsidebarrightargs );

} ?>
这就是我在主题中使用的内容。这个oenology_widget_linkrollbycat 小部件是一个自定义主题小部件。只需替换为您自己的小部件名称。

这样,在默认情况下,您的小部件将应用于指定的侧栏,除非用户通过以下方式将自己的小部件添加到侧栏Dashboard -> Appearance -> Widgets.

结束