我正在使用的一个示例选项:
// 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中单击一个页面时,所有未保存的更改都会消失。我怎样才能防止这种情况?
最合适的回答,由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
}