小部件应该只由用户操作,通常不应该删除它们,因为它们没有版本控制。因此,我建议你在进一步阅读之前先重新思考一下。
小部件位于数据库中的两个位置sidebar_widgets
选项是一个边栏数组,由sidebar id
. 每个侧栏由一组小部件标识符表示。
单个小部件设置位于名为widget_{widget name}
它是由小部件的小部件id索引的数组。
因此,要删除某些特定类型的小部件,您需要执行以下操作
$sidebars = get_option(\'sidebar_widgets\');
$widgets = get_option(\'widget\'.your widget base name);
foreach ($sidebars as $sidebar_id => $sidebar) {
foreach ($sidebar as $key=>$widget_id) {
if ($widget_id match the name pattern of the widget type) {
$widget = $widgets[$widget_id];
if ($widget needs to be deleted)
unset($widgets[$widget_id]);
update_option(\'widget\'.your widget base name, $widgets);
unset($sidebars[$sidebar_id][$key]);
update_option(`sidebar_widgets\', $sidebars);
}
}
}
}
显然,您可以从在小部件的选项中定位小部件id开始,然后在侧栏上循环。
显然,这只是元代码,一些小细节可能需要调整,但请注意,这里的unset可能是以一种不太安全的方式完成的。