什么时候应该将wp_Register_script()与wp_enQueue_script()一起使用,而不是只使用wp_enQueue_script()?

时间:2013-01-21 作者:akTed

我很难理解你何时需要使用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 );
}
我读了很多书(抄本、博客等),但不太明白什么时候该先注册,什么时候该排队。例如,我注意到TwentyEleven没有注册任何样式或脚本,它只是将它们排队。

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

这个wp_register_script() Codex page 字面意思是:

在WordPress中注册javascripts以供以后使用的一种安全方法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 在管理端调用它。

这意味着如果您想将脚本排在前端and 在后端,您可以注册一次脚本,然后使用将其加载到前端wp_enqueue_script 在后端使用admin_enqueue_script.<这样,你就不会在一个主题、插件、小部件或任何东西中有两次相同的排队追索权。

SO网友:Franco

IMHO使用的主要优势wp_register_script 之前wp_enqueue_scripts 在以下段落中说明Codex:

如果已使用wp\\u register\\u script()预先注册的脚本被列为另一个已排队脚本的依赖项,则无需使用wp\\u enqueue\\u script()手动排队。WordPress将自动包括已注册脚本,然后再包括将已注册脚本的句柄列为依赖项的排队脚本。

如果您认为您不需要它(例如,因为您百分之百确定您的脚本不会涉及任何依赖项),您可能可以直接使用wp_enqueue_scripts, 没有初步的wp_register_script.

SO网友:Mohammad Shohel Rana

我阅读了一些文章,得出以下结论。我认为这很有帮助。

使用注册任何脚本wp_register_script() 只是注册;不加载它。在使用将已注册脚本排入队列之前,不会加载该脚本wp_enqueue_script().wp_enqueue_script() 函数自动注册脚本

a、 假设我们需要一个脚本加载到多个地方,比如一次在前端,一次在后端(管理页面)。现在我们可以只注册一次脚本。然后将其分别在前端和后端排队。看,排队意味着加载。注册并不意味着加载。如果我们没有注册它,它将在我们排队时自动注册多次。另一方面,如果我们注册它一次,它将被注册一次,无论我们将它排队多少次。

b、 如果我们想使用一个脚本作为其他脚本的依赖项,那么我们不需要将它与wp_enqueue_script(). 只需注册wp_register_script(). 当我们使用它的句柄名称作为其他已排队脚本的依赖项时,它将自动排队wp_enqueue_script().

c、 如果我们希望在必要时加载脚本,而不是立即加载,那么我们可以注册它以供以后使用。上面显示了用例。

注意。据我所知,CSS样式表也可以得出同样的结论。我的意思是我们可以wp_register_style()wp_enqueue_style() 以同样的方式。

请注意,这里得出的结论反映了我自己的推断。如果我错了,请纠正我。你可能会得出一个不同的更好的结论。如果是这样的话,请告诉我们。谁知道呢?也许你的是最好的。正如俗话所说,“尽可能多的信条,尽可能多的救赎之道。”:)

https://ansrthemeaction.blogspot.com/2019/11/wpregisterscript-when-to-use.html

结束

相关推荐