在你试图做的事情中,有几个根本性的问题阻碍了你实现目标
命名问题是您注册了2个脚本,但您将它们都命名为“自定义”。当您稍后告诉WordPress显示“自定义”时,WordPress如何知道您指的是哪个脚本?
/* Register scripts. */
wp_register_script( \'custom\', JS . \'/jquery-3.1.1.js\');
// does this overwrite the previous line? ¯\\_(ツ)_/¯
wp_register_script( \'custom\', JS . \'/custom.js\');
因此,让我们通过给他们不同的名称(和适当的缩进)来解决这个问题:
/* Register scripts. */
wp_register_script( \'wpnovice-jquery\', JS . \'/jquery-3.1.1.js\');
wp_register_script( \'wpnovice-custom\', JS . \'/custom.js\');
注意,我在每个前面加了前缀,
custom
是一个超级通用的术语,可能已经在使用了。
WP已经随JQuery提供了
永远不要捆绑WordPress附带的库。这样做可能会导致jQuery的多个副本和版本出现在前端。相反,请告诉WP脚本需要jQuery:
/* Register scripts. */
wp_register_script( \'wpnovice-custom\', JS . \'/custom.js\', array( \'jquery\' ) );
注册!=注册脚本会告诉WordPress它们存在,但不会告诉你如何处理它们。WordPress已经注册了很多脚本,但这些脚本并没有出现在每个WordPress站点的前端。
这是教某人如何建造房屋和某人实际建造房屋之间的区别。
因此,注册后,您需要致电wp_enqueue_script
告诉WordPress如何将脚本添加到页面
/* Register scripts. */
wp_register_script( \'wpnovice-custom\', JS . \'/custom.js\', array( \'jquery\' ) );
wp_enqueue_script( \'wpnovice-custom\' );
计时即使使用最新版本的代码,也可能无法工作!这是因为时间和地点很重要。同样的道理,牛排煮熟后要半生不熟也不管用,让WP在已经做好的时候打印脚本也不管用。
作为一条一般性建议,不要将代码放在文件中的全局范围内,而是将其包装在动作或挂钩中,以便在应该运行时运行(并且可以在需要时取消挂钩)。
这里我们想要wp_enqueue_scripts
挂钩/动作。以下是核心WP文档中的一个示例:
function themeslug_enqueue_script() {
wp_enqueue_script( \'my-js\', \'filename.js\', false );
}
add_action( \'wp_enqueue_scripts\', \'themeslug_enqueue_script\' );
关于常数的最后一点注记
/*-------------------------------------------*/
/* 1. CONSTANTS */
/*-------------------------------------------*/
define( \'THEMEROOT\', get_stylesheet_directory_uri() );
define( \'IMAGES\', THEMEROOT . \'/img\' );
define( \'JS\', THEMEROOT . \'/js\' );
我建议不要使用这些名称,它们是超级通用名称,并且会污染全局名称空间。在这种情况下,它们可能会产生误导或导致问题。
此版本的注册脚本调用是显式的,它是否引用了正确的URL没有任何歧义:
// register script
wp_register_script( \'wpnovice-custom\', get_stylesheet_directory_uri() . \'/js/custom.js\', array( \'jquery\' ) );