当前位置: 首页>>技术解读>>正文


我什么时候应该使用 wp_register_script()和 wp_enqueue_script()而不是 wp_enqueue_script()?

webfans 技术解读 , , 去评论

问题描述

当您需要使用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 );
}

我已经做了很多阅读(Codex,博客等),但是我不能完全理解我应该先注册,或者什么时候应该入队。作为一个例子,我注意到TwentyTwelve没有注册任何样式或脚本,它只是将它们排队。

最佳解决思路

wp_register_script() Codex页面字面上说:

A safe way of registering javascripts in WordPress for later use with 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中的某个地方而不是代码中的任何位置注册了所需的所有脚本,它可以在代码中提供一些逻辑。

食典委还说明如下:

Use the wp_enqueue_scripts action to call this function, or admin_enqueue_scripts to call it on the admin side.

这意味着如果要将脚本排入frond-end和back-end,您可以注册一次脚本,然后将其加载到带有wp_enqueue_script的front-end和带有admin_enqueue_script的back-end中。这样你就不会在一个主题,插件,小部件或其他任何东西中拥有两次相同的入队资源。

次佳解决思路

恕我直言,在wp_enqueue_scripts之前使用wp_register_script的主要优点在Codex的以下段落中说明:

Scripts that have been pre-registered using wp_register_script() do not need to be manually enqueued using wp_enqueue_script() if they are listed as a dependency of another script that is enqueued. WordPress will automatically include the registered script before it includes the enqueued script that lists the registered script’s handle as a dependency.

如果您认为自己不需要这样(例如,因为您100%确定您的脚本不会涉及任何依赖项),您可以直接使用wp_enqueue_scripts,而无需初步的wp_register_script

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2088.html,转载请务必附带本地址声明。