admin管理员组

文章数量:1130349

If I print the value of get_theme_mod( 'enable_sleek_header', false ) it is always the previously saved value. If I print the same thing in the header of the theme, it returns the value from customizer.

  • Is it the expected behaviour?
  • Am I using the wrong hook?

Thanks


<?php

add_action( 'after_setup_theme', 'pagespeed_register_menus' );


    function pagespeed_register_menus() {

        //Not getting the modified theme_mod from the customizer without saving.
        register_nav_menus( array(
            'secondary' => __( 'Navigation above header', 'page-speed' ),
        ) );

        if ( get_theme_mod( 'enable_sleek_header', false ) ) {
            register_nav_menus( array(
                'header' => __( 'Navigation menu in header', 'page-speed' ),
            ) );
        } else {
            register_nav_menus( array(
                'primary' => __( 'Navigation below header', 'page-speed' ),
            ) );
        }
        register_nav_menus( array(
            'footer_links' => __( 'Footer links', 'page-speed' ),
        ) );

    }

If I print the value of get_theme_mod( 'enable_sleek_header', false ) it is always the previously saved value. If I print the same thing in the header of the theme, it returns the value from customizer.

  • Is it the expected behaviour?
  • Am I using the wrong hook?

Thanks


<?php

add_action( 'after_setup_theme', 'pagespeed_register_menus' );


    function pagespeed_register_menus() {

        //Not getting the modified theme_mod from the customizer without saving.
        register_nav_menus( array(
            'secondary' => __( 'Navigation above header', 'page-speed' ),
        ) );

        if ( get_theme_mod( 'enable_sleek_header', false ) ) {
            register_nav_menus( array(
                'header' => __( 'Navigation menu in header', 'page-speed' ),
            ) );
        } else {
            register_nav_menus( array(
                'primary' => __( 'Navigation below header', 'page-speed' ),
            ) );
        }
        register_nav_menus( array(
            'footer_links' => __( 'Footer links', 'page-speed' ),
        ) );

    }
Share Improve this question asked Jan 1, 2018 at 18:12 Satish GandhamSatish Gandham 4013 silver badges5 bronze badges 1
  • I am sure that after_setup_theme is the wrong approach , maybe this helps codex.wordpress/Theme_Customization_API – seot Commented Aug 30, 2018 at 19:48
Add a comment  | 

1 Answer 1

Reset to default 0

To register my menus I usually use the init action hook, maybe you could try it.

add_action( 'init', 'pagespeed_register_menus' );

instead of

add_action( 'after_setup_theme', 'pagespeed_register_menus' );

If I print the value of get_theme_mod( 'enable_sleek_header', false ) it is always the previously saved value. If I print the same thing in the header of the theme, it returns the value from customizer.

  • Is it the expected behaviour?
  • Am I using the wrong hook?

Thanks


<?php

add_action( 'after_setup_theme', 'pagespeed_register_menus' );


    function pagespeed_register_menus() {

        //Not getting the modified theme_mod from the customizer without saving.
        register_nav_menus( array(
            'secondary' => __( 'Navigation above header', 'page-speed' ),
        ) );

        if ( get_theme_mod( 'enable_sleek_header', false ) ) {
            register_nav_menus( array(
                'header' => __( 'Navigation menu in header', 'page-speed' ),
            ) );
        } else {
            register_nav_menus( array(
                'primary' => __( 'Navigation below header', 'page-speed' ),
            ) );
        }
        register_nav_menus( array(
            'footer_links' => __( 'Footer links', 'page-speed' ),
        ) );

    }

If I print the value of get_theme_mod( 'enable_sleek_header', false ) it is always the previously saved value. If I print the same thing in the header of the theme, it returns the value from customizer.

  • Is it the expected behaviour?
  • Am I using the wrong hook?

Thanks


<?php

add_action( 'after_setup_theme', 'pagespeed_register_menus' );


    function pagespeed_register_menus() {

        //Not getting the modified theme_mod from the customizer without saving.
        register_nav_menus( array(
            'secondary' => __( 'Navigation above header', 'page-speed' ),
        ) );

        if ( get_theme_mod( 'enable_sleek_header', false ) ) {
            register_nav_menus( array(
                'header' => __( 'Navigation menu in header', 'page-speed' ),
            ) );
        } else {
            register_nav_menus( array(
                'primary' => __( 'Navigation below header', 'page-speed' ),
            ) );
        }
        register_nav_menus( array(
            'footer_links' => __( 'Footer links', 'page-speed' ),
        ) );

    }
Share Improve this question asked Jan 1, 2018 at 18:12 Satish GandhamSatish Gandham 4013 silver badges5 bronze badges 1
  • I am sure that after_setup_theme is the wrong approach , maybe this helps codex.wordpress/Theme_Customization_API – seot Commented Aug 30, 2018 at 19:48
Add a comment  | 

1 Answer 1

Reset to default 0

To register my menus I usually use the init action hook, maybe you could try it.

add_action( 'init', 'pagespeed_register_menus' );

instead of

add_action( 'after_setup_theme', 'pagespeed_register_menus' );

本文标签: getthememod doesn39t return the theme customizer preview39s new values in aftersetuptheme hook