wp_enqueue doesn't work

时间:2011-09-18 作者:japanworm

你们中的一些人可能知道,我一直在努力将Javascript加入到我的Wordpress主题中,但我无法让它工作。我得想办法把这件事做完。我会不断更新这个问题,我会编辑,我希望你能与我一起一步一步地完成这个任务!已经几个月了,我仍然无法让它工作,我也不知道为什么!

Step 1:

我想移动标题中的所有脚本调用。php到我的函数中。php。我把一切都转移到我的职能上。php:(updated!)

function add_my_javascripts() {
    /* If this is the admin area of WordPress, don\'t do anything */
    if( is_admin() )
        return;

    /* Register all of our scripts */
    wp_register_script(\'jquerytools\', \'http://cdn.jquerytools.org/1.2.5/all/jquery.tools.min.js\', array(\'jquery\'));
    wp_register_script(\'jquery.form\', get_template_directory_uri() . \'/js/jquery.form.js\', array(\'jquery\'));
    wp_register_script(\'sprinkle\', get_template_directory_uri() . \'/js/sprinkle.js\', array(\'jquery\', \'jquery-ui-core\', \'jquery-ui-tabs\'));
    wp_register_script(\'custom\', get_template_directory_uri() . \'/js/custom.js\', array(\'jquery\'));
    wp_register_script(\'tooltip\', get_template_directory_uri() . \'/js/tooltip.js\', array(\'jquerytools\'));
    wp_register_script(\'tooltip\', get_template_directory_uri() . \'/js/sliding_tabs.js\', array(\'jquerytools\'));
    wp_register_script(\'contact-form\', get_template_directory_uri() . \'/js/contact-form.js\', array(\'jquery\', \'jquery.form\'));

    /* Enqueue the ones that need to be enqueued */
    wp_enqueue_script(\'sprinkle\');
    wp_enqueue_script(\'custom\');
    wp_enqueue_script(\'tooltip\');
    wp_enqueue_script(\'sliding_tabs\');
    wp_enqueue_script(\'contact-form\');

}
add_action(\'wp_enqueue_scripts\', \'add_my_javascripts\');
这是我的whole function.php 只是为了确保没有其他错误继续干扰wp\\U排队或其他事情:http://pastebin.com/mhCNZbFW此外,我在我的PARENT THEME\'s function.php! 我不使用函数。php for my child主题。

我试图在我的标题中调用该操作。php:(UPDATE: Currently NO HOOK at all, also no CALL in my header.php!!)

Result:所有脚本都已正确加载(使用Firebug进行检查),但没有一个脚本真正起作用!只有“custom.js”可以工作(即使没有在header.php中调用操作)。

为什么这不起作用?请帮我解决这个问题,因为它会带来很多问题!

Step2: (已解决)下一步将是为每个jQuery JS提供无冲突包装(这也不起作用)。

我已经尝试了:-停用所有插件(无效)-创建了一个函数。php用于我的子主题,并将上面的代码从父主题的函数中移除。php(结果:错误消息

Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, \'get_my_scripts\' was given in /hermes/bosweb25a/b155/ipg.zoomingjapancom/wp-includes/plugin.php on line 405
-尝试了另一个主题(TwentyEleven):同样的问题-我试图在标题中这样称呼它。php(正如在TwentyEleven主题中所做的那样:

<?php wp_enqueue_script( \'jquery\', \'jquerytools\', \'jquery-ui-person\', \'jqueryform\', \'sprinkle\', \'custom\', \'tooltip\' ); wp_head(); ?>

</head>
那也不行。。。

LATEST NEWS:请参阅更新的功能。上面的php代码。我现在要做很多事情。至于联系人所需的jquery表单。php我刚刚从联系人中取出了直接脚本调用。php并将其放入自己的js文件中,然后用无冲突包装器将其包装,现在一切正常!我唯一担心的是Wordpress现在是否会将其加载到每个页面上,尽管它只在联系人上需要。php??!!

THE ONLY THING THAT IS STILL NOT WORKING is sprinkle.js:可能的原因是,可能与ui选项卡和jquerytools ui选项卡存在冲突。我应该这样做,但不知道该放在哪里:

<script type="text/javascript" src="jquery-1.6.2.js"></script>
   <script type="text/javascript" src="jquery.tools-1.2.6-dev.js"></script>

   <!-- must do this before including jquery-ui -->
   <script type="text/javascript">
      // change name of jquery tools tabs so that jquery UI doesn\'t barf
      jQuery.fn.jtTabs = jQuery.fn.tabs;
   </script>

   <script type="text/javascript" src="jquery-ui-1.8.14.js"></script>
如果您需要任何进一步的信息,请让我知道!这是我的website 供参考。我一个人做不到。请给我一些建议!任何事情都可能有帮助:)提前谢谢!

3 个回复
最合适的回答,由SO网友:kaiser 整理而成

First Hint: 复制父主题(无需修改)并启动仅包含样式的新子主题。带有注释和普通函数的css文件。php文件。您可以稍后移动东西,但这样可以确保没有任何中断。在这个普通的设置中,一个接一个地解决一个任务。

Second Hint: 检查您的依赖关系。对于某些脚本,您在其中添加了依赖项wp_enqueue_scripts 喜欢jquery-ui-person 我在你上面无尽的代码中找不到。如果找不到脚本,则不会加载从属文件。

Third Hint: 在普通子主题函数中转储以下函数。php文件并检查输出:

function wpse28817_check_scripts()
{
    echo \'<pre>\';
    // Prints the array that registers, etc. your scripts. Should tell a little bit about what\'s happening.
    print_r($GLOBALS[\'wp_scripts\']);
    echo \'</pre>\';
}
add_action( \'shutdown\', \'wpse28817_check_scripts\' );
Fourth Hint: 不要再一起做任何事了。一步一步地做。转到新的香草子主题,只需添加jQuery即可。如果出现:关心下一个脚本等等。

SO网友:Sisir

你可以试试这些。

做一个functions.php 为您的子主题创建文件,并将代码粘贴到那里。子主题的概念是,在自定义时不接触父主题add_action() 到functions.php.get_template_directory_uri() 将指向父主题目录,而不是子主题目录。要获取子主题目录,请尝试以下操作get_stylesheet_directory_uri()wp_enqueue_script() 您需要先注册这些脚本

SO网友:Chip Bennett

第一个问题似乎是一个简单的PHP语法错误:

if (!is_admin()) 

wp_deregister_script(\'jquery\');
wp_register_script(\'jquery\', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, \'\');
wp_enqueue_script(\'jquery\');

wp_enqueue_script(\'custom\', get_template_directory_uri() . \'/js/custom.js\', array(\'jquery\'));
wp_enqueue_script(\'jquerytools\', get_template_directory_uri() . \'/js/jquery.tools.min.js\', array(\'jquery\'));
wp_enqueue_script(\'jquery-ui-person\', get_template_directory_uri() . \'/js/jquery-ui-personalized-1.5.2.packed.js\', array(\'jquery\'));
wp_enqueue_script(\'jquery-ui-person\', get_template_directory_uri() . \'/js/jquery.form.js\', array(\'jquery\'));
wp_enqueue_script(\'sprinkle\', get_template_directory_uri() . \'/js/sprinkle.js\', array(\'jquery\', \'jquery-ui-person\', \'jquery-ui-tabs\'));
您尚未将条件代码包装在大括号中:{}, 像这样:

if (!is_admin()) {

    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, \'\');
    wp_enqueue_script(\'jquery\');

    wp_enqueue_script(\'custom\', get_template_directory_uri() . \'/js/custom.js\', array(\'jquery\'));
    wp_enqueue_script(\'jquerytools\', get_template_directory_uri() . \'/js/jquery.tools.min.js\', array(\'jquery\'));
    wp_enqueue_script(\'jquery-ui-person\', get_template_directory_uri() . \'/js/jquery-ui-personalized-1.5.2.packed.js\', array(\'jquery\'));
    wp_enqueue_script(\'jquery-ui-person\', get_template_directory_uri() . \'/js/jquery.form.js\', array(\'jquery\'));
    wp_enqueue_script(\'sprinkle\', get_template_directory_uri() . \'/js/sprinkle.js\', array(\'jquery\', \'jquery-ui-person\', \'jquery-ui-tabs\'));

}
第二:你从谷歌链接的jquery版本是什么?看起来像是版本1。如果您绝对必须覆盖核心捆绑jQuery版本,请绝对使用相同的(或更新的版本)。

结束

相关推荐

Enqueuing jQuery in plug-ins

我想在插件中使用jQuery。在函数中。我使用的主题的php,我发现:if(!is_admin()) { wp_deregister_script(\'jquery\'); wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js\'); 据我所知,这将加载jQuery,我已经准备好了。我所要做的就是将此添加到插件