Wir benötigen ein LoDash für WordPress

Falls Du es nicht wissen solltest: LoDash ist eine Bibliothek für JavaScript, die Funktionen enthält, um alltägliche Aufgaben zu vereinfachen. Man könnte die Funktionen auch selber schreiben, aber LoDash-Funktionen sind optimiert und gut getestet, somit muss man das Rad nicht neu erfinden.

Das Problem

WordPress ist ein wenig wie eine Programmiersprache. Man hat eine Anzahl an grundlegenden Funktionen, die man zu einer vollständigen Applikation zusammensetzt.

Und genau wie bei einer Programmiersprache werden viele Räder neu erfunden.

Ein typisches Problem in WordPress ist die Übertragung des Wertes einer Variablen von PHP nach JavaScript. Es existiert keine Funktion namens “transferVar()” oder “varToJS()“. Jede:r WordPress-Programmierer:in wird irgendwann auf dieses Problem stoßen, das Internet ist voll mit Blogposts und Anfragen bei StackOverflow.

Die Lösung für das Problem ist “wp_localize_script()“. Offensichtlich? Nicht so ganz. Um die Sache noch etwas komplizierter zu machen, gibt es eine neue Funktion namens “wp_add_inline_script()“. Der Funktionsname deutet ebenfalls nicht auf die Übertragung eines Variablenwertes hin. So werden die Funktionen benutzt:

-- PHP ---
wp_register_script( 'my_script', 'myscript.js' );
wp_localize_script( 'my_script', 'my_variables', array(
'variable1' => 'content1',
'variable2' => 'content2)
));
wp_enqueue_script('my_script');

-- JavaScript --
const variable1 = my_variables.variable1;
const variable2 = my_variables.variable2;
console.log(variable1, variable2);

-- PHP ---
wp_enqueue_script('my_script', '/scripts.js', false);
$script = 'variable1 = ' . json_encode(array("key1" => "content1")) .'; ';
$script .= 'variable2 = ' . json_encode(array("key2" => "content2")) .'; ';
wp_add_inline_script( 'my_script', $script );

-- JavaScript --
console.log(variable1, variable2);

Die erste Funktion ist nicht sehr intuitiv, weil man keine Daten lokalisiert. Die zweite Version ist etwas intuitiver, aber wenn man neu in der WordPress-Entwicklung ist, wird man sicherlich ein Blogpost oder eine beantwortete Frage finden müssen. Nebenbei: die meisten AI-Bots finden die zweite Lösung nicht.

Eine mögliche Lösung

Wäre es nicht praktisch, wenn man einfach eine Funktion namens “transferToJS()” (oder wie immer man sie nennen möchte) aufrufen und als Parameter ein Array oder ein Objekt, ein JSON-String oder -Objekt oder eine andere Datenstruktur übergeben könnte und die Funktion erledigt den Rest?

transferToJS($variable1);
transferToJS([$variable1, $variable2]);
transferToJS('{"var1": "content1", "var2": content2"}');
transferToJS(array("var1"=>"content1", "var2"=>"content2");
transferToJS(json_encode(array("key1" => "content1"));

Die tatsächliche Logik wäre innerhalb der Funktion versteckt und erfahrene Entwickler könnten die inneren Abläufe verwalten.

Ein weiterer Anwendungsfall, der mir einfällt, ist das Hinzufügen eines Hilfe-Tabs oder “Ansicht anpassen”. Man muss sich tief in der Dokumentation vergraben, um eine Lösung zu finden. Ein einfaches “add_options_help()” oder “add_screen_options()” würde viele Entwickler ermutigen, einen Hilfe-Tab zu erstellen.

Fazit

Eine WordPress-Bibliothek würden neuen und erfahrenen WordPress-Entwicklern helfen, gut eingeführte und getestete Lösungen in ihren Projekten zu implementieren.

Ich weiß, dass es ein recht großes Projekt wäre und Entwickler sind immer Mangelware, aber man kann das Projekt klein anfangen und langsam um weitere Funktionen erweitern.
Auf diese Weise würden clevere Lösungen nicht in Blogposts oder StackOverflow-Antworten verrotten, sondern wäre für viele Entwickler einfach zu finden und zu nutzen.

Nebenbei: “LoPress” wäre ein schrecklicher Name.

Foto von Jon Tyson auf Unsplash