使用jQuery检索定制器值

时间:2014-12-14 作者:S.K.

我正在尝试使用jQuery检索主题选项(customizer)值:

    $wp_customize->add_setting( \'header_fixed\', array(
        \'default\'   => true,
    ) );
    $wp_customize->add_control( new WP_Customize_Control( $wp_customize, \'header_fixed\', array(
        \'label\'     => __( \'Enable fixed navigation?\', \'theme\' ),
        \'section\'   => \'header_section\',
        \'settings\'  => \'header_fixed\',
        \'type\'      => \'checkbox\',
        \'priority\' => 40,
    ) ) );
如果上述值为true,则标题元素将为固定位置。如果不是,则为相对位置(将使用jQuery添加或不添加类)。我对jQuery不是很在行,所以下面的内容基于customizer中的内容。js,发件人:

    wp.customize( \'header_fixed\', function( value ) {
    value.bind( function( to ) {
        if ( \'true\' == to ) {
            $( \'#header-inner\' ).addClass( \'fixed\' );
        }
    } );
} );
我一直把这个放在customizer中。js在其他地方这样做会导致错误:“wp”未定义。

编辑*我正在按如下方式将脚本排队:

function theme_customize_preview_js() {
wp_enqueue_script( \'theme-customizer\', get_template_directory_uri() .  \'/js/customizer.js\', array( \'customize-preview\' ) );
} 
add_action( \'customize_preview_init\', \'theme_customize_preview_js\' );
编辑**目前这似乎不太可能,所以我用PHP完成了这项工作:

<?php if ( \'\' != get_theme_mod( \'header_fixed\') ) echo \'fixed\'; ?>
谢谢!

1 个回复
SO网友:Layka

在customizer预览中使用问题中的JQuery代码进行实时更新。您的传输应设置为“postMessage”。在您的网站中,您可以在函数中添加body类。php:

function theme_prefix_body_class( $classes ) {

    if ( get_theme_mod(\'header_fixed\', 0 ) == true  ) {

        $classes[] = \'fixed-header\';
    }

    return $classes;
}
add_filter( \'body_class\', \'theme_prefix_body_class\' ); 

结束

相关推荐

<head>中的额外代码-空白jQuery函数

我最近注意到,在我的网站(goinspire.com)的中,出现了两次以下代码:<script>jQuery(function(){});</script> 它看起来像一个带有空白jquery函数的脚本。我的问题是:1)这段代码是否有任何作用,如果没有,2)我如何找出它的来源,以便摆脱它。我希望我已经包括了所有相关/必要的信息。如果没有,请通过下面的评论让我知道。这是正在进行的清理我的网站并试图提高页面速度的项目的一部分。谢谢你的帮助!