菜单中断的原因是响应菜单是通过jQuery插件处理的。当您通过包含第二个版本的jQuery来包含zweatherfeed Javascript时,您正在删除jQuery对象和所有jQuery插件(包括响应菜单)。第二个版本覆盖第一个版本。
WordPress有一个处理包含各种Javascript文件的功能,这意味着您不需要在header.php
. WordPress允许您注册Javascript文件(wp_register_script()
) 使用版本号等各种设置,包括在页眉或页脚中,and which Javascript files to include before it as they are dependent upon it.. 其他功能(wp_enqueue_script()
) 是告诉WordPress打印script
元素以包含Javascript文件。
在您的主题中functions.php
文件中,您将添加一个函数来添加zweatherfeed Javascript。然后,您将告诉WordPress在wp_enqueue_scripts
钩这样可以确保在正确的时间调用它。
function theme_name_add_scripts() {
// Register the zweatherfeed script
wp_register_script(
\'zweatherfeed\', // The name for the script
\'http://rheareview.com/weather/jquery.zweatherfeed.min.js\', // The URL for the script
array( \'jquery\' ), // The scripts this script needs loaded before it
\'1.0.1\', // Version number
false // False will include it in the head, true will include it at the end
);
// Tell WordPress to include the zweatherfeed
wp_enqueue_script( \'zweatherfeed\');
}
// Call our function for the \'wp_enqueue_scripts\' hook
add_action( \'wp_enqueue_scripts\', \'theme_name_add_scripts\' );
您会注意到的另一件事是,您不必注册jQuery,因为默认情况下,jQuery包含在WordPress中。但我们仍然必须告诉WordPress在zweatherfeed脚本之前包含jQuery。
您的zweatherfeed还具有script
具有某些配置的元素。WordPress没有特定的方式来处理您的案件(there is a feature for a configuration object), 但我们还是可以让它工作的。中的Javascript文件head
在wp_head()
. 您将使用wp_head
钩子打印出您的配置Javascript代码。
function theme_name_add_script_config() {
if ( wp_script_is(\'zweatherfeed\') ) { // check that the zweatherfeed script is printed
echo "<script> jQuery(\'#test\').weatherfeed([\'USTN0132\']);</script>";
}
}
add_action( \'wp_head\', \'theme_name_add_script_config\', 20 );
现在已经完成了,通常我会将其放在主题的Javascript文件中。我将有一个Javascript文件,用于连接各种插件和服务。
另外,如果将Javascript文件放在主题中,则需要使用get_template_directory_uri()
获取主题文件夹的URL。
function theme_name_add_scripts() {
// Register the zweatherfeed script
wp_register_script(
\'zweatherfeed\', // The name for the script
get_template_directory_uri() . \'/js/jquery.zweatherfeed.min.js\', // Here
array( \'jquery\' ),
\'1.0.1\',
false
);
wp_enqueue_script( \'zweatherfeed\');
}