,

JavaScript-Module in WordPress-Plugins nutzen

pile of brown wooden blocks

Module nichts nicht Neues in der JavaScript-Programmierung und es ist eine gute Praxis, den Code zu modularisieren.

WordPress bietet von Haus aus keine Möglichkeit an, Skripte als Modul zu laden. Es existiert ein Ticket von Mitte 2022, aber es hat noch nicht viel Beachtung gefunden. Deshalb ist bis dahin ein Workaround nötig, wenn man Module benutzen möchte.

Zum Glück bietet WordPress einen Filter namens „script_loader_tag“ an. Damit hat man die Möglichkeit den <script>-String, den wp_enqueue-script erzeugt, zu manipulieren. Ohne weitere Umschweife, der Code:

add_filter('script_loader_tag', function ($tag, $handle, $src) {
  $tag = str_replace('<script ', '<script type="module" ', $tag);
  return $tag;”
});
  • `$tag: <script>-Tag, das von wp_enqueue_script erzeugt wird
  • $handle: Handle des Skripts
  • $src: Die URL des Skripts

Der Filter nimmt den „<script „-Teil des Tags und fügt den notwendigen type=module Teil hinzu. Das ist alles.

Ein weiterer in diesem Zusammenhang interessanter Parameter ist $handle. Er erlaubt es, Skripte aus- oder einzuschließen. z.B.

add_filter('script_loader_tag', function ($tag, $handle, $src) {
   if ( 'NonModule.js' !== $handle ) {
      $tag = str_replace('<script ', '<script type="module" ', $tag);
   }”
   return $tag;
});

Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Falls du auf diesen Beitrag mit einem Artikel auf deiner eigenen Webseite geantwortet hast, kannst du hier die URL deines Beitrags eingeben. Dabei sollte es sich um die Permalink-URL handeln. Deine Antwort wird dann (möglicherweise nach der Moderation) auf dieser Seite angezeigt. Falls du deine Antwort aktualisieren oder entfernen möchtest, aktualisiere oder lösche deinen Beitrag auf deiner eigenen Webseite und gib die URL des Beitrags erneut ein. (Erfahre mehr über Webmentions.)