这个插件是一个简单的演示测试,看看我是否可以用文本动态地填充预先存在的小部件区域。在本例中,我的主题创建了小部件区域“主标题小部件”,我正试图用下面的“文本”内容填充它。我被卡在电话线上了。。。
$sidebars_widgets[$sidebar_id] = "widget_text-".$id;
因为我不确定如何获取对动态创建的文本小部件对象的引用,以便预设其内容并将其放置在我的“主标题小部件”中。。。
<?php
/*
Plugin Name: Widget Test
*/
function cb_activate_widgettest(){
$sidebar_id = \'home-header-widget\';
$sidebars_widgets = get_option(\'sidebars_widgets\');
$id = count($opts)+1;
$sidebars_widgets[$sidebar_id] = array("text-".$id);
$ops = get_option(\'widget_text\');
// find an $id that works...
$ops[$id] = array(
\'title\' => \'foo hoo\',
\'text\' => \'bar mitz\', // content?
);
update_option(\'widget_text\', $ops);
update_option(\'sidebars_widgets\', $sidebars_widgets);
}
register_activation_hook(__FILE__, \'cb_activate_widgettest\');
?>
最合适的回答,由SO网友:onetrickpony 整理而成
您的代码中有一些错误:
您需要手动指定实例ID,例如2。如果要附加文本小部件,而不是覆盖侧栏的内容,请尝试使用$id = count($opts)+1
, 或者你可以生成一个随机ID。
使用widget_ID_base-instance_ID 在里面 $sidebars_widgets[$sidebar_id] = "widget_text-".$id;
, 将其放入数组中:$sidebars_widgets[$sidebar_id] = array("text-".$id);