wake-up-neo.com

Wann sollte ich wp_register_script () mit wp_enqueue_script () und wp_enqueue_script () verwenden?

Ich habe Probleme zu verstehen, wann Sie wp_register_script() verwenden müssen. Derzeit benutze ich nur so etwas wie:

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

Ich habe viel gelesen (Codex, Blogs usw.), kann aber nicht genau verstehen, wann ich mich zuerst registrieren oder wann ich mich nur anmelden soll. Als Beispiel bemerkte ich, dass TwentyTwelve keine Stile oder Skripte registriert, sondern nur in eine Warteschlange eingereiht.

51
akTed

Die wp_register_script() Codex Seite sagt wörtlich:

Ein sicherer Weg, um Java-Skripte in WordPress für die spätere Verwendung mit wp_enqueue_script() zu registrieren.

Das heißt, wenn Sie Ihre Skripte registrieren möchten, diese aber nicht direkt auf Ihre Seiten laden möchten, können Sie die Dateien einmal registrieren und sie dann bei Bedarf laden.

Zum Beispiel:

Sie haben eine switch-Anweisung, die einige Funktionen lädt, aber zwei von drei Fällen benötigen eine bestimmte Javascript-Datei, und einer nicht. Sie können das Skript jedes Mal in die Warteschlange stellen, was mehr Ressourcen kostet, oder das Skript einfach in die Warteschlange stellen, wenn Sie es benötigen:

...
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;
}

Es ist nicht erforderlich, ein Skript zu registrieren und anschließend in die Warteschlange zu stellen. Es kann jedoch eine gewisse Logik in Ihrem Code enthalten, wenn Sie alle Skripts registrieren, die Sie irgendwo in Ihrem functions.php und nicht überall in Ihrem Code benötigen.

Der Kodex sagt auch Folgendes:

Verwenden Sie die Aktion wp_enqueue_scripts, um diese Funktion aufzurufen, oder admin_enqueue_scripts, um sie auf der Administratorseite aufzurufen.

Dies bedeutet, dass Sie, wenn Sie Ihr Skript im Frontend und einreihen möchten, ein Skript einmal registrieren und es dann im Frontend mit wp_enqueue_script und im Backend laden können -Ende mit admin_enqueue_script.
Auf diese Weise haben Sie nicht zweimal denselben Enqueue-Zugriff in einem Thema, Plugin, Widget oder was auch immer.

46
Mike Madern

IMHO wird der Hauptvorteil der Verwendung von wp_register_script vor wp_enqueue_scripts im folgenden Absatz von Codex dargestellt:

Skripts, die mit wp_register_script () vorregistriert wurden, müssen nicht manuell mit wp_enqueue_script () in die Warteschlange gestellt werden, wenn sie als Abhängigkeit von einem anderen Skript in der Warteschlange aufgeführt werden. WordPress wird das registrierte Skript automatisch einschließen, bevor es das in die Warteschlange gestellte Skript einschließt, das das Handle des registrierten Skripts als Abhängigkeit auflistet.

Wenn Sie glauben, dass Sie dies nicht benötigen (z. B. weil Sie zu 100% sicher sind, dass Ihr Skript nicht in Abhängigkeiten verwickelt ist), können Sie wahrscheinlich direkt mit wp_enqueue_scripts fortfahren, ohne einen vorläufigen wp_register_script.

6
Franco

Ich habe einige Artikel durchgesehen und bin zu folgendem Schluss gekommen. Ich denke es hilft.

  1. Das Registrieren von Skripten mit wp_register_script () ist nur das Registrieren. nicht laden. Das registrierte Skript wird erst geladen, wenn es mit wp_enqueue_script () in die Warteschlange gestellt wurde.
  2. Wir müssen nicht jedes Skript gleichzeitig registrieren und in die Warteschlange stellen. Wir sollten uns nur anstellen. Die Registrierung ist nicht obligatorisch, da die Funktion wp_enqueue_script () das Skript automatisch registriert.
  3. Wir müssen uns jedoch registrieren, während wir uns in einer der folgenden Situationen befinden:

ein. Nehmen wir an, wir brauchen ein Skript, um es an mehr als einer Stelle zu laden, etwa einmal im Front-End und einmal im Back-End (Admin-Seite). Jetzt können wir das Skript nur einmal registrieren. Und dann einzeln in Front-End und Back-End einreihen. Schauen Sie, das Einreihen bedeutet das Laden. Registrieren heißt nicht Laden. Falls wir es nicht registrieren, wird es automatisch so oft registriert, wie wir es in die Warteschlange stellen. Wenn wir es hingegen einmal registrieren, wird es einmal registriert, unabhängig davon, wie oft wir es in die Warteschlange stellen.

b. Wenn wir ein Skript als Abhängigkeit von anderen Skripten verwenden möchten, müssen wir es nicht mit wp_enqueue_script () in eine Warteschlange stellen. Einfach mit wp_register_script () registrieren. Und es wird automatisch in die Warteschlange gestellt, wenn der Handle-Name als Abhängigkeit von anderen Skripten verwendet wird, die mit wp_enqueue_script () in die Warteschlange gestellt wurden.

c. Wenn das Skript nicht sofort, sondern bei Bedarf geladen werden soll, können Sie es einfach für die spätere Verwendung registrieren. Der Anwendungsfall wurde oben gezeigt.

N.B. Soweit ich überzeugt bin, kann das gleiche Ergebnis für die CSS-Stylesheets gezogen werden. Ich möchte damit sagen, dass wir wp_register_style () und wp_enqueue_style () auf dieselbe Weise verwenden können.

Beachten Sie, dass die hier gezogene Schlussfolgerung meinen eigenen Abzug widerspiegelt. Wenn ich falsch liege, korrigieren Sie mich bitte. Und Sie könnten zu einem anderen und viel besseren Ergebnis gekommen sein. Wenn ja, lassen Sie es uns bitte wissen. Wer weiß? Vielleicht ist deins das Beste. Wie das Sprichwort sagt: "So viele Grundsätze, so viele Wege zur Erlösung." :)

https://sxbook.blogspot.com/2018/12/wpregisterscript-when-to-use.html