删除jQuery后在页脚加载jQuery迁移吗?

时间:2018-09-23 作者:Brett

我正在以以下方式删除WordPress中的jQuery迁移:

add_filter( \'wp_default_scripts\', \'remove_jquery_migrate\' );

function remove_jquery_migrate( &$scripts ){
    if(!is_admin()){
        $scripts->remove( \'jquery\');
        $scripts->add( \'jquery\', false, array( \'jquery-core\' ), \'1.2.1\');
    }
}
我对你如何设置in_footer 具有的属性WP_Dependencies::add 函数,我尝试了以下操作,但没有成功:

$scripts->add( \'jquery\', false, array( \'jquery-core\' ), \'1.2.1\', [\'in_footer\' => true]);
正确的方法是什么?

2 个回复
SO网友:Krzysiek Dróżdż

有更安全的方法移除jquery-migrate... 您的代码几乎正确,但首先要删除jQuery,然后再添加它。如果jQuery的依赖项将更改,那么您的代码将导致问题。

但您不必删除脚本来更改其依赖项。您可以做到这一点:

function remove_jquery_migrate( $scripts ) {
    if ( ! is_admin() && isset( $scripts->registered[\'jquery\'] ) ) {
        $script = $scripts->registered[\'jquery\'];

        if ( $script->deps ) {
            $script->deps = array_diff( $script->deps, array( \'jquery-migrate\' ) );
        }
    }
} 
add_action( \'wp_default_scripts\', \'remove_jquery_migrate\' );
这样更安全,因为我们只删除了一个需要删除的依赖项。

如果要将jQuery移动到页脚,则可以使用以下代码:

function remove_jquery_migrate( $scripts ) {
    if ( ! is_admin() && isset( $scripts->registered[\'jquery\'] ) ) {
        $script = $scripts->registered[\'jquery\'];

        if ( $script->deps ) {
            $script->deps = array_diff( $script->deps, array( \'jquery-migrate\' ) );
        }

        $scripts->add_data( \'jquery\', \'group\', 1 );
        $scripts->add_data( \'jquery-core\', \'group\', 1 );
    }
} 
add_action( \'wp_default_scripts\', \'remove_jquery_migrate\' );
同样,我们不会删除任何脚本并添加自己的脚本,而是只修改现有的脚本,所以这是一种更安全的方法。

SO网友:Ian

这是正确的,但您确实提供了一个新的来源。

替换:

$scripts->add( \'jquery\', false, array( \'jquery-core\' ), \'1.2.1\', [\'in_footer\' => true]);
使用:

$scripts->add( \'jquery\', \'http://new-url/\', array( \'jquery-core\' ), \'1.2.1\', [\'in_footer\' => true]);

结束

相关推荐

如何在PHP中获得最终输出的HTML?

我想获得WordPress帖子页面的整个HTML源代码,以便从HTML中删除元关键字。(然后希望将这些关键字用作Twitter标签。)我认为可以使用callback 喜欢下面的PHP脚本,但它的想法是错误的。function callback($buffer) { // scraping meta and var_dump it $meta_tags = getMetaTags($buffer); echo var_dump($meta_tags) ;