web-dev-qa-db-de.com

Die Live-Vorschau des Customizers funktioniert nicht, wird aktualisiert, es ändert sich jedoch nichts

Hier ist mein Code:

// Hooked to "after_setup_theme"
if(get_theme_mod('enable_vertical_header')) {
    // init vertical header, register scripts, style, settings and output html in template
    $vertical_header = new Vertical_Header;
}

Ich habe im Customizer eine Kontrollkästchenoption "enable_vertical_header" (Standardwert 0) erstellt, um die vertikale Kopfzeile ein-/auszuschalten. Wenn ich die Option umschalte, wird der Live-Vorschaubereich aktualisiert, aber nichts geändert.

Indem ich den Wert von "enable_vertical_header" wiedergebe, sehe ich immer null, was sinnvoll ist, wenn es sich um ein Frontend handelt. Sollte get_theme_mod im Customizer nicht den Echtzeitwert zurückgeben?


Update: der Steuercode

function my_custom_text_settings( $wp_customize ) {
    $wp_customize->add_section( 'my_section' , array(
        'title'      => __('My Section','mytheme'),
        'priority'   => 30,
    ) );

    // Register the settings
    $wp_customize->add_setting( 'enable_vertical_header', array(
        'default'        => 0,
        'type'           => 'theme_mod',
        'capability'     => 'edit_theme_options',
    ) );
    // Add the controls
    $wp_customize->add_control( 'enable_vertical_header', array(
        'label'       => __( 'My custom control', 'translation_domain' ),
        'section'     => 'my_section',
        'settings'    => 'enable_vertical_header',
        'type'        => 'checkbox',
        'priority'    => 10
    ) );

}
add_action( 'customize_register', 'my_custom_text_settings' );
1
Edward

Nun, durch einige Experimente habe ich die Antwort gefunden.

get_theme_mod liefert beim Aufrufen in 'after_setup_theme' oder 'init' nicht den Echtzeitwert. Es funktioniert in 'customize_preview_init' und 'wp_loaded'.

add_action('customize_preview_init', 'my_header' );
function my_header() {
        if(get_theme_mod('enable_vertical_header')) {
            $vertical_header = new Vertical_Header;
        }   
}
2
Edward