主题定制器更改在更改页面时消失

时间:2013-01-23 作者:Ünsal Korkmaz

我正在使用的一个示例选项:

     // Layout
    $wp_customize->add_setting( $themeslug.\'_settings[layout]\', array(
        \'default\' => \'content-sidebar\',
        \'type\' => \'option\',
        \'transport\'         => \'postMessage\'
    ) );             
    $wp_customize->add_control( $themeslug.\'_settings[layout]\', array(
        \'label\' => __( \'Layout\', \'anatema\' ),
        \'section\' => \'secenek\',
        \'type\' => \'radio\',
        \'choices\' => array(
            \'content-sidebar\' => __( \'Content - Sidebar\', \'anatema\' ),
            \'sidebar-content\' => __( \'Sidebar - Content\', \'anatema\' ),
        ),
    ) );                        
    $wp_customize->get_setting( $themeslug.\'_settings[layout]\' )->transport = \'postMessage\';
单击“保存”按钮时,我的选项将被保存。更改正在使用customizer对实时预览产生正确影响。但当我在live preview中单击一个页面时,所有未保存的更改都会消失。我怎样才能防止这种情况?

1 个回复
最合适的回答,由SO网友:Ünsal Korkmaz 整理而成

根据@Otto的提示,我找到了问题所在。

我在函数中调用主题设置。php,并将设置作为主题文件中的全局变量调用。这工作正常,只是当您通过单击链接更改页面时,主题定制器的实时编辑中的临时更改正在消失。

在这次经历之后,我的建议是:

如果需要为主题设置运行某些函数,例如:

$anatema_settings = get_option( \'anatema_settings\' ); // site options
switch ($anatema_settings["layout"]) {
    case \'only-content\':
        $anatema_layout["primary_class"] = "span8";
        $anatema_layout["primary_fullwidth_class"] = "span8";
        $anatema_layout["secondary_class"] = "hide";        
        $anatema_layout["container_class"] = "container";       
        $anatema_layout["page_class"] = "site-narrow";      
      break;
    case \'sidebar-content\':
        $anatema_layout["primary_class"] = "span8 pull-right";
        $anatema_layout["primary_fullwidth_class"] = "span12";
        $anatema_layout["secondary_class"] = "span4";       
        $anatema_layout["container_class"] = "container";       
         break;
    default:
    case \'content-sidebar\':
        $anatema_layout["primary_class"] = "span8";
        $anatema_layout["primary_fullwidth_class"] = "span12";
        $anatema_layout["secondary_class"] = "span4";       
        $anatema_layout["container_class"] = "container";       
       break;   
}
创建一个新文件,并将其包含到每个需要这些主题选项的主题文件中。Update: 在customize\\u preview\\u init action中调用它,如:

add_action( \'customize_preview_init\', "firmasite_customizer_preview_init");
function firmasite_customizer_preview_init() {
    include ( get_template_directory() . \'/functions/customizer-call.php\');         // Customizer functions 
} 

结束

相关推荐