wp_register_script()
时遇到了麻烦。目前,我只使用类似的东西:add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
function enqueue() {
$handle = 'some-handle';
$js = 'http://example.com/my.js';
wp_register_script( $handle, $js );
wp_enqueue_script( $handle );
}
我已经做了大量的阅读工作(法典,博客等),但是我什么时候不太了解应该先注册,或者在我刚入队时注册。例如,我注意到TwentyTwelve没有注册任何样式或脚本,而只是将它们排入队列。
#1 楼
wp_register_script()
Codex页面的字面意思是:一种在WordPress中注册javascript以供以后与
wp_enqueue_script()
一起使用的安全方法。这意味着,如果您想要注册脚本但不直接将其加载到页面中,可以注册一次文件,然后在需要时加载它们。
例如:
您有一个switch语句,它会加载一些功能,但是三种情况中有两种需要特定的javascript文件,而另一种则不需要。您可以每次都排入脚本,这会花费更多资源,或者仅在需要时才排入脚本:
...
wp_register_script( 'my-handy-javascript', ... );
...
switch( $somevar ) {
case 'value':
wp_enqueue_script( 'my-handy-javascript' ); // needs the file
...
break;
case 'value2':
wp_enqueue_script( 'my-handy-javascript' ); // needs the file
...
break;
default:
case 'value3': // doesn't needs the file
...
break;
}
无需注册脚本然后将它们排入队列,但是如果您在
functions.php
中某个地方而不是在代码中的任何地方注册了所需的所有脚本,则可以在代码中提供一些逻辑。法典还告诉以下内容:
使用
wp_enqueue_scripts
操作调用此函数,或使用admin_enqueue_scripts
在管理端调用此函数。这意味着如果要在以下位置排队脚本在前端和后端,您可以注册一次脚本,然后将其加载到
wp_enqueue_script
的前端,然后将其加载到admin_enqueue_script
的后端。在一个主题,插件,小部件或其他任何内容中,相同的入队资源两次。#2 楼
恕我直言,以下是Codex在以下段落中说明了在wp_register_script
之前使用wp_enqueue_scripts
的主要优点:不需要使用wp_register_script()预注册的脚本进行
如果将wp_enqueue_script()列为被排队的另一个脚本的依赖项,则使用wp_enqueue_script()手动将其排队。 WordPress
将自动包含已注册的脚本,然后再包含
排队的脚本,该脚本将已注册脚本的句柄列为
依赖项。
您不需要这样做(例如,因为您100%确保脚本不会涉及任何依赖项),您可能可以直接使用
wp_enqueue_scripts
,而无需初步的wp_register_script
。#3 楼
我浏览了一些文章并得出以下结论。我认为这很有帮助。使用
wp_register_script()
注册任何脚本只是在注册;不加载。使用wp_enqueue_script()
将注册的脚本排入队列之前,不会加载已注册的脚本。我们不需要同时注册和排入每个脚本。我们应该入队。注册不是强制性的,因为
wp_enqueue_script()
函数会自动注册脚本。但是在以下任何一种情况下,我们确实需要注册:
假设我们需要一个脚本来加载到多个地方,例如一次在前端,一次在后端(管理页面)。现在,我们只需注册一次脚本即可。然后将其分别放入前端和后端。看,排队意味着装载。注册并不意味着加载。万一我们不注册,它将在我们排队时自动注册多次。另一方面,如果我们注册一次,则无论我们排队多少次,它都会注册一次。
b。如果我们想使用脚本作为其他脚本的依赖项,则无需使用
wp_enqueue_script()
将其加入队列。只需向wp_register_script()
注册即可。当我们将其句柄名称用作wp_enqueue_script()
排队的其他脚本的依赖项时,它将自动排队。N.B.据我所知,可以为CSS样式表得出相同的结论。我的意思是说我们可以以相同的方式使用
wp_register_style()
和wp_enqueue_style()
。请注意,这里得出的结论反映了我自己的推论。如果我错了,请纠正我。您可能得出了一个不同的更好的结论。如果是这样,请告诉我们。谁知道?也许你是最好的。俗话说:“有许多宗旨,有许多拯救方法。” :)
https://ansrthemeaction.blogspot.com/2019/11/wpregisterscript-when-to-use.html
评论
您的解释是我读过的最好的。现在,我了解了为什么注册脚本很重要。谢谢!
– Eje
19-10-30在21:42
非常感谢@Jee
– Mohammad Shohel Rana
19年11月4日在3:29
评论
谢谢。这清除了很多。那么,您是否认为TwentyTwelve不必费心注册,因为它肯定会加载它们?
–akTed
13年1月21日在15:09
那肯定是可能的。我不知道二十一十二主题是如何构建的,因为我从未使用过它,但是他们肯定会有理由加入而不是注册。
–迈克·麦登(Mike Madern)
2013年1月21日15:14
从这个意义上说,我不同意“您可以每次使脚本入队,花费更多的资源,或者仅在需要时入队”。在示例代码中,您可以删除注册调用,而对wp_enqueue_style()进行多个等效的完整调用(带有$ src arg)。这只是更多的打字工作,而不会导致更大的资源需求。正确?
– Jan-Philip Gehrcke
2015年6月16日在20:43
到目前为止,所有说明都没有提到的一点是,您可以使用wp_register_script()仅注册一个脚本,以便可以将其用作其他脚本的依赖项,并且仅与它们一起加载,而无需直接排队。
– JHoffmann
16年11月5日在16:57
即使这很好解释了,我还是建议您阅读此答案。
–lowtechsun
16年11月15日在18:15