it-swarm.com.de

Laden von jQuery in die Fußzeile nach dem Entfernen von jQuery migrate?

Ich entferne jQuery migrate in WordPress folgendermaßen:

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');
    }
}

Ich bin verwirrt darüber, wie Sie die in_footer -Eigenschaft mit der WP_Dependencies :: add -Funktion festlegen. Ich habe Folgendes versucht, aber es hat nicht funktioniert:

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

Was ist der richtige Weg, um dies zu tun?

1
Brett

Es gibt viel sicherere Methoden zum Entfernen von jquery-migrate... Ihr Code ist fast korrekt, aber zuerst entfernen Sie jQuery und fügen ihn dann erneut hinzu. Wenn sich Abhängigkeiten für jQuery ändern, verursacht Ihr Code Probleme.

Sie müssen das Skript jedoch nicht entfernen, um die Abhängigkeiten zu ändern. Sie können genau das tun:

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' );

Es ist viel sicherer, da wir nur eine Abhängigkeit entfernen, die wir entfernen möchten.

Und wenn Sie jQuery in die Fußzeile verschieben möchten, können Sie diesen Code verwenden:

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' );

Auch hier entfernen wir keine Skripte und fügen eigene hinzu, sondern ändern nur vorhandene Skripte, um die Sicherheit zu erhöhen.

2

Das ist richtig, aber Sie haben eine neue Quelle angegeben.

Ersetzen:

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

Mit:

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