繁体   English   中英

javascript应该放在Wordpress中,这只是single.php所必需的?

[英]Where should javascript go in Wordpress which is only necessary for single.php?

我想在我正在构建的Wordpress网站的帖子末尾添加社交按钮(Facebook,Twitter,G +)。 它们只需要显示在帖子的永久链接页面上(在single.php中编辑)。

所以,我的问题是,我是否应该在header.php中放置必要的脚本(这会将它们放在适当的位置,但即使在没有必要时它们也会一直加载),或者我应该将它们放在single.php中的某个地方(这意味着它们只是必要时加载,但是位于<body>中间的某个位置?

WordPress有一个名为is_single()函数 ,如果你正在处理单个页面,它会返回。

只有在查看单个页面时才可以包含脚本。 你可以做到

<?php if (is_single()) : ?>
  <script src="http://twitter.com/path/to/bla"></script>
<?php endif; ?>

您可能希望在页面末尾(在关闭body -tag之前)加载脚本,因为它允许在加载脚本之前呈现页面。

执行此操作的最佳方法是使用wp_enqueue_scripts操作挂钩。 你应该总是使用它来避免冲突并保持随之而来的所有好处。

我稍微修改了一个来自doc示例来说明这一点:

<?php
 function my_scripts_method() {
 if(is_single()){
  // register your script location, dependencies and version
  wp_register_script('custom_script',
    get_template_directory_uri() . '/js/custom_script.js',
    array('jquery'),
    '1.0' );
  // enqueue the script
  wp_enqueue_script('custom_script');
 }
 add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

添加在body中间混合的脚本元素没有任何问题,但是如果要增加加载时间,可能需要将script元素附加到footer.php 在加载dom的其余部分之后调用脚本将阻止加载脚本阻止页面的其余部分呈现。

如果它是一个非常小的脚本,我认为没有理由不将它们添加到内联中,这样可以很容易地看到它们影响的元素。

你可以将它们放在single.php的底部,但正如你所指出的那样,这会让它们出现在页面中间。

相反,将它们放在header.php中,但内部使用if语句来检查它们是否需要(即它是单页),如下所示:

<?php if (is_single()): ?>
     <script>...</script>
<?php endif;?>

如果你把上面的代码放在内部的php标签中,第一个<?php和last ?>不会/可能会导致问题。 无论哪种方式,在if语句中,应该是HTML,而不是php才能使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM