首先,在(渲染)时间中选择正确的位置init, 当您想在上添加回拨时wp_enqueue_script.
示例:
add_action( \'wp_enqueue_script\', function() {
wp_deregister_script( \'jquery\' );
// Rest of logic
} );
同时,您可能希望使用core使用的正确版本。我知道,经常关注这一点很麻烦,没有人想监控资产/依赖关系。幸运的是,您可以使用core中已经存在的信息。资产所需的依赖关系也是如此。示例:
add_action( \'wp_enqueue_script\', function() {
$version = $GLOBALS[\'wp_scripts\']->registered[\'jquery\']->ver;
$protocol = \'sprintf( \'http%s://\', is_ssl() ? \'s\' : \'\' );
$dependencies = $GLOBALS[\'wp_scripts\']->registered[\'jquery\']->deps;
wp_enqueue_script(
\'jquery\',
"{$protocol}cdn.example.com",
$dependencies,
$version,
TRUE
);
} );
将已注册的脚本移动到页脚还有一种更简单的方法可以将已注册的脚本移动到页脚:直接在脚本注册表中编辑它的信息。考虑以下(MU)插件:
<?php
/* Plugin Name: Moves registered scripts to the footer */
add_action( \'wp_enqueue_scripts\', function() {
foreach ( apply_filters( \'wp_scripts.footer\', [] as $script )
$GLOBALS[\'wp_scripts\']->add_data( $script, \'group\', 1 );
}, PHP_INT_MAX -1 );
现在,您只需将数组附加到上面的过滤器并将脚本移动到页脚:
add_filter( \'wp_scripts.footer\', function( Array $scripts ) {
return [
\'jquery\',
# Other scripts
];
} );
其他注意事项,我无法留下来写下…关于您的代码,还有许多非常奇怪(但有效)的地方需要注意:
当您不需要变量时,您正在分配变量。特别是在函数调用中,不需要使用myFunction( $var = \'foo\' ). 只需添加值即可当您使用//url.tld/script.js, 然后,客户端将能够决定要走的路线:HTTPS vs HTTP。这对于分布式代码来说可能还可以(即使这样,最好先获取协议并使用它),但如果您知道您为站点提供服务的方式,那么请直接使用它。它速度更快,如果有HTTPS可用,那么看在上帝的份上:使用它请勿注销WP核心脚本。使用它们。它们是为已经在客户端/浏览器中登录的用户缓存的。对于所有其他产品,您将提供一个兼容的单一版本依赖于$_SERVER 仅当脚本始终只能通过客户端执行时才可以。在命令行上,使用此阵列中的数据是不可靠的。在某些情况下,它会发生变化,而在另一些情况下,它不会设置。WP有一些可供您使用的后备方法