Wordpress wp_enqueue_script()永远不会工作

时间:2011-11-09 17:07:56

标签: jquery wordpress include wordpress-theming

我已经阅读了关于wp_enqueue脚本的所有帖子和文档...但我从来没有成功地让它工作。

这就是我正在做的事情:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"</script>
<script type="text/javascript">
MY CODE
</script>

我知道我知道我知道这不是正确的方法。所以这就是我试过的:

wp_enqueue_script('jquery');
wp_head();

没有运气。

add_action('init', 'addscripts');
function addscripts() {
    wp_enqueue_script('jquery');
 }
wp_head();

没有运气。

//in the theme's functions.php file
add_action('init', 'addscripts');
//add_action('wp_enqueue_scripts', 'addscripts'); //this also doens't work
function addscripts() {
    wp_enqueue_script('jquery');
 }

我也尝试了相同的方法,链接到谷歌的外部jquery库,而不是jquery标签。我也试过取消注册然后注册jquery脚本。从不工作。

所以我认为这些是关键问题:

  1. 我对wp_enqueue_script()功能的调用有问题吗?

  2. 它应该去哪里? functions.phpheader.php

  3. 我是否需要使用未提及的特定挂钩? 'init''template_redirect''wp_enqueue_scripts?'

  4. 请不要codex复制/粘贴代码段!我已经阅读了50次并尝试了所有这些。我保证。

    我正在尝试干净安装WP3并将上述代码添加到默认的二十二主题。

3 个答案:

答案 0 :(得分:3)

我们必须假设wp_enqueue有效,因为我没有看到干草叉和火把。

这样的事情会让许多开发者感到不安。

因此,我们假设它永远不会被调用。

尝试将这样的内容添加到被调用的函数中以取消注册/注册新版本的jQuery(不确定为什么要执行此操作)。

<?php error_log( 'Something called me!' , 0 ); ?>

然后在运行您的站点并且您希望调用您的函数之后,请检查您的服务器错误日志(/var/log/apache/yoursite-error.log或其他内容)并查看该字符串是否显示。

如果它出现,我们可以继续进行下一组故障排除。

答案 1 :(得分:1)

http://codex.wordpress.org/Function_Reference/wp_enqueue_script

  

假设您要使用jQuery的CDN副本而不是WordPress,   将此代码添加到functions.php文件中。

<?php
function my_scripts_method() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js');
    wp_enqueue_script( 'jquery' );
}    

add_action('wp_enqueue_scripts', 'my_scripts_method');
?>

答案 2 :(得分:0)

我想添加一条评论,但假设开场问题太老了,不能这样做。

我希望我在这里引用所有合适的人并承认他们的意见。


我和@Emerson有同样的问题,直到我做了以下操作,以及jQuery如何工作/加载。

首先,我将我的JS代码从$更改为jQuery(正如@Johannes Pille在开头的一堆评论中所建议的那样。@Johannes Pille提到的noConflict()的信息可以在http://codex.wordpress.org/Function_Reference/wp_enqueue_script#jQuery_noConflict_Wrappers

编解码器的链接只适合你@Emerson ..:P

所以我的代码如下所示 - 希望这有助于某人。

JS代码

/**
 * navigation.js
 *
 * Handles toggling the navigation menu for small screens.
 */

jQuery(document).ready(function(){
jQuery(".nav-toggle").click(function(){
    jQuery("#menu-header-menu").slideToggle("fast");
});
});

在我的functions.php文件中

function toggle_menu(){
if(!is_admin()){
    //register the script location
    wp_register_script('navigation', 
        get_stylesheet_directory_uri() . '/js/navigation.js', 
        array('jquery'), '2.0.110526' );
    // enqueue the script
    wp_enqueue_script('navigation');
};
}
add_action('init', 'toggle_menu'); 

我发现告诉Wordpress要使用的jQuery版本,'2.0.110526'非常非常重要。如果没有它,它就无法工作。

我没有必要添加任何将jQuery添加到header.php或functions.php的OP示例。正如许多其他人所说,Wordpress附带了jQuery。我发现你只需要在函数中注册脚本时告诉Wordpress何时以及使用什么版本.php