如何向需要jQuery的页脚添加动态Java代码段

时间:2017-01-29 作者:ShahePars

我知道我可以将脚本文件添加到需要jquery的主题的页脚wp_enqueue_script, 但我需要向页脚添加动态javascript代码,类似这样的东西。。。

if ( $body_logged_in == \'on\' ) {
    $count = 60;            
} else {        
    $count = 90;        
}   
if ( $navbar_sticky == \'on\' ) {

    $count = $count + 45;

}

?>

<script>

    $(\'.fixed-sidebar\').stick_in_parent({offset_top: <?php echo $count; ?>});

</script>

<?php
我用WP_footer 钩子,安全且标准吗?还是有更好的方法?

    function theme_wp_footer() {

    if ( $body_logged_in == \'on\' ) {

        $count = 60;

    } else {

        $count = 90;    

    }

    if ( $navbar_sticky == \'on\' ) {

        $count = $count + 45;

    }

    ?>

    <script>

        $(\'.fixed-sidebar\').stick_in_parent({offset_top: <?php echo $count; ?>});

    </script>   
    <?php       
}
add_action( \'wp_footer\', \'theme_wp_footer\' );
怎么做?

1 个回复
最合适的回答,由SO网友:Fayaz 整理而成

很明显,你可以像以前那样做。然而,有一种更好的方法,比以这种方式在页脚中添加脚本标记更易于维护。

您可以使用wp_localize_script() 作用

例如,在functions.php:

function theme_wp_footer_scripts() {
    /* your custom CODE */
    if ( $body_logged_in == \'on\' ) {
        $count = 60;
    } else {
        $count = 90;    
    }
    if ( $navbar_sticky == \'on\' ) {
        $count = $count + 45;
    }

    /* add main script in footer */
    wp_enqueue_script( \'footer_script\', get_stylesheet_directory_uri() . \'/js/my-script.js\', array( \'jquery\' ), null, true );

    /* add dynamic data for your footer_script with object name footer_script_data */
    wp_localize_script( \'footer_script\', \'footer_script_data\',
        array( 
            \'count\' => $count
        )
    );
}
add_action( \'wp_enqueue_scripts\', \'theme_wp_footer_scripts\' );
然后在js/my-script.js:

jQuery(document).ready(function($) {

    /* Your custom JavaScript CODE that is jQuery dependent */
    /* see how footer_script_data object name is used from external JavaScript file */
    $(\'.fixed-sidebar\').stick_in_parent({offset_top: footer_script_data.count});    

});
更多关于wp_localize_script.

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请