2013-02-13 90 views
5

通过Google进行一些搜索,我一遍又一遍地找到了将jQuery添加到从头开始的Wordpress主题的相同代码。将jQuery和自定义脚本添加到Wordpress主题

if (!is_admin()) add_action("wp_enqueue_scripts", "my_jquery_enqueue", 11); 
function my_jquery_enqueue() { 
    wp_deregister_script('jquery'); 
    wp_register_script('jquery', "http" . ($_SERVER['SERVER_PORT'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", false, null); 
    wp_enqueue_script('jquery'); 
    wp_enqueue_script('my_script', get_bloginfo('template_url') . '/js/theme.js', array('jquery'), '1.0', true); 
} 

我已经添加了此代码,以我的functions.php文件,和我创建一个js文件夹,并使用它下面的语法做了theme.js文件:

jQuery(function ($) { 
    /* You can safely use $ in this code block to reference jQuery */ 
}); 

当我刷新我的WP网站,theme.js文件似乎没有被调用。在Chrome开发工具中,它不在正在呈现的js文件中列出。

我使用过时的方法吗?我怎样才能让我的/js/theme.js文件,使用jquery,为我的主题工作?

回答

8

首先,wp_enqueue_scripts只在前端运行,所以你不需要is_admin()检查。

二,只注销默认的jQuery(捆绑WP)if you really know what you are doing。在你的例子中,你正在加载谷歌过时的版本(目前是1.8.3,而不是1.7.1)。另请参阅:Don’t Dequeue WordPress’ jQuery

第三,您应该使用get_stylesheet_directory_uri,这是用于父级和子级主题文件夹的正确函数。

最后,该代码/themes/my-theme/functions.php工程确定:

add_action("wp_enqueue_scripts", "my_js_so_14864221", 11); 

function my_js_so_14864221() 
{ 
    wp_enqueue_script( 
     'my_script', 
     get_stylesheet_directory_uri() . '/js/theme.js', 
     array('jquery'), 
     '1.0', 
     true 
    ); 
} 

而且在theme.js jQuery代码应该像封装:

jQuery(document).ready(function($) { 
    // $('#your-stuff').animate().hide().whatever(); 
}); 
相关问题