主题内的小部件配置

时间:2015-02-07 20:46:36

标签: php wordpress wordpress-theming

大家好!

我需要动态更改主题(对于移动版本,我有不同的外观),但小部件无法正确保存。

我尝试从主题配置小部件,但此方法不起作用:

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')):

您能否建议一个方法(或插件)来配置我的主题的小部件,在我更改主题后,小部件将显示为保存在主题中?

1 个答案:

答案 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';
}