如何将WordPress的PHP代码添加到JavaScript中

5

我有以下的javascript代码:

$(window).scroll(function() {
    if($(this).scrollTop() > 50)  /*height in pixels when the navbar becomes non opaque*/ 
    {
        $('.navbar-default').addClass('sticky');
        $('.navbar-brand img').attr('src','assets/images/logo.png'); //change src
    } else {
        $('.navbar-default').removeClass('sticky');
        $('.navbar-brand img').attr('src','assets/images/logo__footer.png')

    }
});

有可能插入一个wp自定义php代码吗?
<?php the_custom_logo(); ?>

不要使用这个静态属性

.attr('src','assets/images/logo.png');

非常感谢您的预先帮助。


这个 JavaScript 是作为 PHP 脚本的一部分创建的,还是在 .js 文件中,您将其链接到页面中? - RiggsFolly
@RiggsFolly 嗨,这是JS文件的一部分。 - Jamdev
那么我认为答案是否定的,不能直接这样做。 - RiggsFolly
3个回答

5

您需要在模板中设置变量:

<script>
    var logoImage = <?php the_custom_logo(); ?>;
    var logoImageFooter = <?php the_custom_logo()?> //here footer logo
</script>

然后,在您的js文件中使用它。
$(window).scroll(function() {
    if($(this).scrollTop() > 50)  /*height in pixels when the navbar becomes non opaque*/ 
    {
        $('.navbar-default').addClass('sticky');
        $('.navbar-brand img').attr('src',logoImage); //change src
    } else {
        $('.navbar-default').removeClass('sticky');
        $('.navbar-brand img').attr('src',logoImageFooter)

    }
});

嗨@vasyl-zhuryk,非常感谢。您能告诉我在哪个确切的模板中设置变量吗? - Jamdev
@Jamdev 现在,我没有WordPress服务器,也看不到这个文件。但是你可以自己找到它。在你的模块中有一个HTML文件,它与你的JS文件一起加载。 - Vasyl Zhuryk
1
非常感谢! - Jamdev

1

你的Js代码:

$(window).scroll(function() {
    if($(this).scrollTop() > 50)  /*height in pixels when the navbar becomes non opaque*/ 
    {
        $('.navbar-default').addClass('sticky');
        $('.navbar-brand img').attr('src','custom_logo.png'); //change src
    } else {
        $('.navbar-default').removeClass('sticky');
        $('.navbar-brand img').attr('src','logo_footer.png')

    }
});

HTML代码:

<?php $customLogo= 'custom_logo'; ?>
<?php $footerLogo= 'footer_logo'; ?>
<html>
  <body>
    <script type="text/javascript">  
      // notice the quotes around the ?php tag         
      var customLogo="<?php echo $customLogo; ?>";
      var footerLogo="<?php echo $footLogo; ?>";
      alert(customLogo);
      alert(footerLogo);
    </script>
  </body>
</html>

1
如果您需要在 PHP 代码输入中使用 jQuery,则需要使用 wp_localize_script() 函数。更多信息
 var logoImage = <?php the_custom_logo(); ?>;
var logoImageFooter = <?php the_custom_logo()?> //here footer logo

// Register the script
wp_register_script( 'some_handle', 'path/to/myscript.js' );

// Localize the script with new data
$translation_array = array(
    'logo_image' => the_custom_logo(),
    'logo_image_footer' => the_custom_logo()'
);
wp_localize_script( 'some_handle', 'object_name', $translation_array );

// Enqueued script with localized data.
wp_enqueue_script( 'some_handle' );

你可以按照以下方式访问JavaScript中的变量:
    <script>
        alert( object_name.logo_image);
        alert( object_name.logo_image_footer);
    </script> 


 $('.navbar-brand img').attr('src',object_name.logo_image); //change src

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接