web-dev-qa-db-ja.com

ページを変更するとテーマカスタマイザの変更が消えてしまう

私が使用しているオプションの例:

     // 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を使用したライブプレビューでは変更が正しく行われていますが、ライブプレビューでページをクリックすると、保存されていないすべての変更が消えます。どうすればそれを防ぐことができますか?

2
Ünsal Korkmaz

@ 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 
} 
1
Ünsal Korkmaz