简体   繁体   English

在Wordpress中运行的Javascript需要在header.php或functions.php中运行吗?

[英]Javascript not working in Wordpress need to run in header.php or functions.php?

I'm trying to get a few js files to work inside my Wordpress site's header. 我想在我的Wordpress网站的标题中找到一些js文件。 The scripts are showing up and loading, but aren't working, however they work just fine on our regular html site so I know the code is right, just don't know how to correctly implement it in Wordpress. 脚本显示和加载,但不起作用,但它们在我们的常规HTML网站上工作正常,所以我知道代码是正确的,只是不知道如何在Wordpress中正确实现它。 Any help is much appreciated! 任何帮助深表感谢!

The 3 main scripts I'm after to get working are the stickypanel.js (sticks the nav to the top), slicknav.js (mobile nav code), and slicknav.modernizer.js (mobile nav code). 我要完成的3个主要脚本是stickypanel.js(将导航栏固定到顶部),slicknav.js(移动导航代码)和slicknav.modernizer.js(移动导航代码)。

They work fine on our test site (even on mobile): 它们在我们的测试网站上运行良好(即使在移动设备上):
http://www.efficient.infraredcamerasinc.com/pages/contact-infrared-cameras-inc.html http://www.efficient.infraredcamerasinc.com/pages/contact-infrared-cameras-inc.html

but alas can't get it working on the blog (Wordpress) part of our site: 但唉不能让它在我们网站的博客(Wordpress)部分工作:
http://www.efficient.infraredcamerasinc.com/blog/ http://www.efficient.infraredcamerasinc.com/blog/

I'm also needing it to work on all the posts and pages as well, so I'm assuming that the scripts running (or sent to run) in the header are the way to go. 我也需要它来处理所有的帖子和页面,所以我假设在标题中运行(或发送运行)的脚本是要走的路。 I had read that direct paths were a no-no so tried getting them pulled from the child theme folder but I couldn't find the correct code (I know <?php bloginfo('template_directory') goes to the parent theme but couldn't find how to pull from the child theme). 我已经读过直接路径是禁止的,所以尝试将它们从子主题文件夹中拉出来但是我找不到正确的代码(我知道<?php bloginfo('template_directory')转到父主题但却无法'找到如何从儿童主题中拉出来)。

I tried implementing wp_enqueue_script function in functions.php but I don't think I'm doing that right at all because then I get just a blank page. 我尝试在functions.php实现wp_enqueue_script函数,但我认为我没有做到这一点,因为那时我只得到一个空白页面。 Is that the correct way to go about it? 这是正确的方法吗?

It's confusing because the stylesheets I've added in the header.php are working correctly. 这很令人困惑,因为我在header.php中添加的样式表工作正常。

I know that the slicknav scripts run this code for the mobile nav: (I didn't write the original scripts so going off what I see) 我知道slicknav脚本运行这个代码用于移动导航:(我没有写原始脚本,所以我看到了)

 <div class="slicknav_menu"> <a href="#" aria-haspopup="true" tabindex="0" class="slicknav_btn slicknav_collapsed" style="outline: none;"><span class="slicknav_menutxt">MENU</span><span class="slicknav_icon"><span class="slicknav_icon-bar"></span><span class="slicknav_icon-bar"></span><span class="slicknav_icon-bar"></span></span></a> <ul class="slicknav_nav slicknav_hidden" aria-hidden="true" role="menu" style="display: none;"> <li><a href="../index.html" role="menuitem" tabindex="-1">Home</a></li> <li class="slicknav_collapsed slicknav_parent"><a href="#" role="menuitem" aria-haspopup="true" tabindex="-1" class="slicknav_item slicknav_row" style="outline: none;">Products <span class="slicknav_arrow">►</span></a> <ul role="menu" class="slicknav_hidden" aria-hidden="true" style="display: none;"> <li><a href="handheld-infrared-cameras.html" role="menuitem" tabindex="-1">Handheld</a></li> <li><a href="fixed-mount-infrared-cameras.html" role="menuitem" tabindex="-1">Fixed Mount</a></li> <li><a href="usb-infrared-cameras.html" role="menuitem" tabindex="-1">USB</a></li> <li><a href="analog-infrared-cameras.html" role="menuitem" tabindex="-1">Analog</a></li> <li><a href="infrared-camera-software.html" role="menuitem" tabindex="-1">Software</a></li> <li><a href="infrared-camera-systems.html" role="menuitem" tabindex="-1">Systems</a></li> </ul> </li> <li class="slicknav_collapsed slicknav_parent"><a href="#" role="menuitem" aria-haspopup="true" tabindex="-1" class="slicknav_item slicknav_row" style="outline: none;">Applications <span class="slicknav_arrow">►</span></a> <ul role="menu" class="slicknav_hidden" aria-hidden="true" style="display: none;"> <li><a href="infrared-camera-industrial-applications.html" role="menuitem" tabindex="-1">Industrial</a></li> <li><a href="infrared-camera-scientific-applications.html" role="menuitem" tabindex="-1">Scientific</a></li> <li><a href="infrared-camera-medical-applications.html" role="menuitem" tabindex="-1">Medical</a></li> <li><a href="infrared-camera-aerial-applications.html" role="menuitem" tabindex="-1">Aerial</a></li> <li><a href="infrared-camera-electrical-applications.html" role="menuitem" tabindex="-1">Electrical</a></li> <li><a href="infrared-camera-security-applications.html" role="menuitem" tabindex="-1">Security</a></li> </ul> </li> <li class="slicknav_collapsed slicknav_parent"><a href="#" role="menuitem" aria-haspopup="true" tabindex="-1" class="slicknav_item slicknav_row" style="outline: none;">Services <span class="slicknav_arrow">►</span></a> <ul role="menu" class="slicknav_hidden" aria-hidden="true" style="display: none;"> <li><a href="infrared-training-institute-training-services.html" role="menuitem" tabindex="-1">Training</a></li> <li><a href="infrared-camera-calibration-services.html" role="menuitem" tabindex="-1">Calibration</a></li> <li><a href="infrared-camera-repair-services.html" role="menuitem" tabindex="-1">Repair</a></li> <li><a href="infrared-camera-rental-services.html" role="menuitem" tabindex="-1">Rental</a></li> <li><a href="infrared-camera-inspection-services.html" role="menuitem" tabindex="-1">Inspection</a></li> <li><a href="custom-designed-infrared-cameras.html" role="menuitem" tabindex="-1">Custom Design</a></li> </ul> </li> <li class="slicknav_collapsed slicknav_parent"><a href="#" role="menuitem" aria-haspopup="true" tabindex="-1" class="slicknav_item slicknav_row" style="outline: none;">Resources <span class="slicknav_arrow">►</span></a> <ul role="menu" class="slicknav_hidden" aria-hidden="true" style="display: none;"> <li><a href="infrared-cameras-buyers-guide.html" role="menuitem" tabindex="-1">Buyer's Guide</a></li> <li><a href="infrared-camera-export-restrictions.html" role="menuitem" tabindex="-1">Export Restrictions</a></li> <li><a href="infrared-measurements-thermodynamics-defined.html" role="menuitem" tabindex="-1">Infrared 101</a></li> <li><a href="infrared-academic-informational-white-pages.html" role="menuitem" tabindex="-1">White Pages</a></li> <li><a href="infrared-terminology.html" role="menuitem" tabindex="-1">Terminology</a></li> <li><a href="infrared-image-gallery.html" role="menuitem" tabindex="-1">Gallery</a></li> <li><a href="infrared-camera-news.html" role="menuitem" tabindex="-1">News</a></li> </ul> </li> <li class="slicknav_collapsed slicknav_parent"><a href="#" role="menuitem" aria-haspopup="true" tabindex="-1" class="slicknav_item slicknav_row" style="outline: none;">Support <span class="slicknav_arrow">►</span></a> <ul role="menu" class="slicknav_hidden" aria-hidden="true" style="display: none;"> <li><a href="faq-frequently-asked-infrared-camera-questions.html" role="menuitem" tabindex="-1">FAQ</a></li> <li><a href="infrared-camera-lens-calculator.html" role="menuitem" tabindex="-1">Lens Calculator</a></li> <li><a href="contact-infrared-cameras-inc.html" role="menuitem" tabindex="-1">Contact Support</a></li> </ul> </li> <li class="slicknav_collapsed slicknav_parent"><a href="#" role="menuitem" aria-haspopup="true" tabindex="-1" class="slicknav_item slicknav_row" style="outline: none;">About <span class="slicknav_arrow">►</span></a> <ul role="menu" class="slicknav_hidden" aria-hidden="true" style="display: none;"> <li><a href="about-infrared-cameras-inc.html" role="menuitem" tabindex="-1">ICI</a></li> <li><a href="about-infrared-cameras-inc-customers.html" role="menuitem" tabindex="-1">Customers</a></li> <li><a href="about-infrared-cameras-inc-staff.html" role="menuitem" tabindex="-1">Staff</a></li> <li><a href="infrared-cameras-inc-calendar-events.html" role="menuitem" tabindex="-1">Calendar</a></li> <li><a href="contact-infrared-cameras-inc.html" role="menuitem" tabindex="-1">Contact Us</a></li> </ul> </li> </ul> </div> 

And here is my header.php file: 这是我的header.php文件:

 <?php /** * @package Make */ ?><!DOCTYPE html> <!--[if lte IE 9]><html class="no-js IE9 IE" <?php language_attributes(); ?>><![endif]--> <!--[if gt IE 9]><!--><html class="no-js" <?php language_attributes(); ?>><!--<![endif]--> <head> <?php wp_head(); ?> <!-- SCRIPTS --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript" src="//use.edgefonts.net/cabin;source-sans-pro:n2,i2,n3,n4,n6,n7,n9.js"></script> <script type="text/javascript" src="/js/jquery.stickypanel.js"></script> <script type="text/javascript" src="/js/jquery.slicknav.js"></script><!-- SLICKNAV .jS FILE --> <script type="text/javascript" src="/js/slicknav.modernizer.js"></script><!-- SLICKNAV .js FILE --> <!-- GOOGLE ADWORDS CONVERSION TRACKING PHONE NUMBER --> <script type="text/javascript"> (function(a,e,c,f,g,b,d){var h={ak:"946404688",cl:"SIdkCKOh-V4Q0PqjwwM"};a[c]=a[c]||function(){(a[c].q=a[c].q||[]).push(arguments)};a[f]||(a[f]=h.ak);b=e.createElement(g);b.async=1;b.src="//www.gstatic.com/wcm/loader.js";d=e.getElementsByTagName(g)[0];d.parentNode.insertBefore(b,d);a._googWcmGet=function(b,d,e){a[c](2,b,h,d,null,new Date,e)}})(window,document,"_googWcmImpl","_googWcmAk","script"); </script> <!-- GOOGLE ADWORDS CONVERSION TRACKING PHONE NUMBER CALLBACK FUNCTION --> <script type="text/javascript"> var callback = function(formatted_number, mobile_number) { // formatted_number: number to display, in the same format as // the number passed to _googWcmGet(). // (in this case, '1-800-123-4567') // mobile_number: number formatted for use in a clickable link // with tel:-URI (in this case, '+18001234567') var e = document.getElementById("phone"); e.href = "tel:" + mobile_number; e.innerHTML = "" e.appendChild(document.createTextNode(formatted_number)); }; </script> <!--[if lt IE 9]> <script src="http://css3-mediaqueries-js.googlecode.com/files/css3-mediaqueries.js"></script> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- STYLESHEETS --> <link rel="shortcut icon" href="/images/favicon.ico?172158521"/><!-- FAVICON --> <link rel="stylesheet" href="/css/layout.css"> <link rel="stylesheet" href="/css/footer.css"> <link rel="stylesheet" href="/css/header.css"> <link rel="stylesheet" href="/css/slicknav.css"><!-- SLICKNAV .CSS FILE --> </head> <body onload="init()"; "_googWcmGet(callback, '1-409-861-0788)"> <!-- HEADER END --> <!-- CONTENT --> <!-- PAGE BANNER --> <div id="indexbanner"> <img class="flex" src="/images/1960_banners/news.jpg" alt="thermal infrared imager support"> </div> <!-- PAGE BANNER END --> <div id="site-content" class="site-content"> <div class="container"> 

Thank you in advance! 先感谢您!

wp_enqueue_scripts() is definitely the way to go, as it ensures that the paths to the scripts are correct, and that scripts and dependacies are loaded in the correct order. wp_enqueue_scripts()绝对是要走的路,因为它确保脚本的路径是正确的,并且脚本和dependacies以正确的顺序加载。 You need something like the following in your theme functions.php file: 您需要在主题functions.php文件中使用以下内容:

/**
 * Registers and enqueues theme scripts
 * @args void
 * @returns void
 */
function lma_scripts_and_styles() {

    // Register scripts. Args are $handle, $src, $dependancies, $version, $in_footer:
    wp_register_script( 'stickypanel', get_stylesheet_directory_uri() . '/js/jquery.stickypanel.js', array( 'jquery' ), '', false );
    wp_register_script( 'slicknav', get_stylesheet_directory_uri() . '/js/jquery.slicknav.js', array( 'jquery' ), '', false );
    wp_register_script( 'modernizr', get_stylesheet_directory_uri() . '/js/jquery.slicknav.js', array(), '', false );

    // Now that they're registered you can enqueue them using the handles specified above:
    wp_enqueue_script( 'stickypanel' );
    wp_enqueue_script( 'slicknav' );
    wp_enqueue_script( 'modernizr' );
}
// Hook into the enqueue scripts action
add_action('wp_enqueue_scripts', 'lma_scripts_and_styles', 999);

Read the full documentation on both wp_register_script() and wp_enqueue_script() for the full breakdown, but the general gist is to first register them, then enqueue them. 阅读有关wp_register_script()wp_enqueue_script()的完整文档以获取完整的细分,但一般要点是首先注册它们,然后将它们排队。 When you register the arguments are: 注册参数时:

  1. $handle: This is a name used to refer to the script later on. $ handle:这是稍后用于引用脚本的名称。
  2. $src: The URL to the script. $ src:脚本的URL。 Avoid hardcoding a path directly to the script; 避免直接将路径硬编码到脚本中; use either get_stylesheet_directory_uri() or get_template_directory_uri() as these will figure out the correct URL for you. 使用get_stylesheet_directory_uri()get_template_directory_uri()因为这些将为您找出正确的URL。
  3. $depenandcies: This is an array of script handles that this script requires; $ depenandcies:这是此脚本所需的脚本句柄数组; the most common one to use is jQuery. 最常用的是jQuery。 Note that WP includes it's own copy of jQuery, you don't need to add your own, just add it as a dependacy. 请注意,WP包含它自己的jQuery副本,您不需要添加自己的副本,只需将其添加为依赖项。
  4. $version: Specifies a particular version of a script to load by adding it to the end of the path as a query. $ version:指定要加载的脚本的特定版本,方法是将其作为查询添加到路径末尾。 This is optional, so you probably won't need it. 这是可选的,因此您可能不需要它。
  5. $in_footer: True or false; $ in_footer:对或错; whether to load this script in the footer, or otherwise load it in the header. 是否在页脚中加载此脚本,或以其他方式将其加载到页眉中。 Modernizr typically needs to get loaded in the header, you might be able to get away with loading the other two in the footer. Modernizr通常需要加载到标题中,您可能可以在页脚中加载其他两个。

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

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