大家好!
我需要动态更改主题(对于移动版本,我有不同的外观),但小部件无法正确保存。
我尝试从主题配置小部件,但此方法不起作用:
if (!function_exists('sync_widgets_config')):
function sync_widgets_config() {
static $validConf = [
'orphaned_widgets_1' => [
0 => 'search-2',
1 => 'recent-posts-2',
2 => 'recent-comments-2',
3 => 'archives-2',
4 => 'categories-2',
5 => 'meta-2',
],
'wp_inactive_widgets' => [0 => 'gin-content-categories-2',],
'sliding_sidebar' => [
0 => 'gin-login-form-3',
1 => 'gin-account-cabinet-2',
2 => 'gin-content-top-menu-2',
],
'header_area' => [0 => 'gin-top-area-2',],
'pre_content' => [0 => 'gin-content-news-slider-2',],
'global_menu' => [0 => 'gin-content-categories-3'],
'footer' => [0 => 'gin-footer_widget-2',],
'global_footer' => [0 => 'gin-siteheart_widget-2',],
];
if ($validConf == wp_get_sidebars_widgets()) {
return;
}
wp_set_sidebars_widgets($validConf);
}
sync_widgets_config();
endif; // if (!function_exists('sync_widgets_config')):
您能否建议一个方法(或插件)来配置我的主题的小部件,在我更改主题后,小部件将显示为保存在主题中?
答案 0 :(得分:0)
我解决了这个问题。我做了下一步:
在这两个主题中,我都注册了两个主题的小部件区域:
// Desktop areas
register_sidebar(array(
'name' => 'Top area',
...
));
//...
// Mobile areas
register_sidebar(array(
'name' => 'Sliding area',
...
));
在此之后,我为桌面主题配置了小部件,并将小部件添加到移动小部件区域。
// If user agent is mobile, we will change theme on fly
if (wp_is_mobile()) {
add_filter('stylesheet', 'change_theme', 1);
add_filter('template', 'change_theme', 1);
}
// Return mobile theme name
function change_theme($theme)
{
return 'mobiletheme';
}