私が使用しているオプションの例:
// 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.jsを使用したライブプレビューでは変更が正しく行われていますが、ライブプレビューでページをクリックすると、保存されていないすべての変更が消えます。どうすればそれを防ぐことができますか?
@ Ottoのコツで、私は問題を見つけました。
私はfunctions.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;
}
新しいファイルを作成して それらのテーマオプションを必要とするすべてのテーマファイルにそれを含めます。 更新:customize_preview_initアクションで呼び出します。
add_action( 'customize_preview_init', "firmasite_customizer_preview_init");
function firmasite_customizer_preview_init() {
include ( get_template_directory() . '/functions/customizer-call.php'); // Customizer functions
}