将脚本与 PHP 决策排队


enqueue script with php decisions

在WordPress中,使用java脚本的推荐选项是使用wp_enqueue_script(),但是如果我想在该脚本中放入一些php怎么办? 例如,查看以下代码:

$(window).scroll(function () {
    if ($(window).scrollTop() > 100) {
        <?php if ( !is_front_page() ){ ?>
            $('.primary-menu').hide('slow', 'swing'); 
            $('.site-logo').css('height', '60px').css('padding-bottom', '0');
            $('#masthead').css('height', '5px'); 
        <?php } ?>
        <?php if ( !mida_is_english() ) : ?>
            $('.site-header').addClass('shrink');
            $("#masthead.site-header.shrink")
            .find('.site-logo img')
            .attr('src', '<?php echo $upload_dir['baseurl']?>/2015/12/extra-cropped-logo.jpg'); 
        <?php else : ?>
            $('.site-header').addClass('shrink');
            $("#masthead.site-header.shrink")
            .find('.site-logo img')
            .attr('src', '<?php echo $upload_dir['baseurl']?>/2015/10/mida-eng-logo.png'); 
        <?php endif; ?>             
    }
    else{ //some more code....

如何对此代码进行排队?我可以把它放在 php 文件中并使用 wp_enqueue_script() 将该文件排队吗?

希望我的问题有意义..

如果您不愿意将该代码添加到网站的页脚.php文件中,则可以使用wp_localize_script()将数据传递给JavaScript

// Localize the script with new data
$data = array(
    'is_front_page' => is_front_page(),
    'is_english' => mida_is_english()
);
wp_localize_script( 'your-registered-script-handle', 'page_info', $data );

请注意,您可能需要在wp_enqueue_scripts挂钩之后钩接它,以便它正常工作。然后,您可以通过以下方式在JS中使用它:

// This is in a JavaScript file
if ( !page_info.is_front_page ) {
    // Do stuff
}
if ( !page_info.is_english ) {
    // Do some other stuff
}

综上所述,我建议将您提到的代码注入wp_footer,而不是弄乱本地化......