Das Plugin Save Post. Check Links. prüft nach Speichern eines Inhalts, ob die enthaltenen Links gültig sind. Dafür wird in Gutenberg ein AJAX-Request abgeschickt und mit der Antwort eine gegebenenfalls notwendige Fehlermeldung ausgegeben.
Doch wie führen wir in Gutenberg am besten eine Aktion aus, nachdem ein Inhalt gespeichert wurde? Das ist eigentlich recht einfach.
subscribe() und isSavingPost()
Mit wp.data.subscribe()
können wir alle Änderungen im Editor überwachen, und wp.data.select( 'core/editor' ).isSavingPost()
gibt an, ob ein Inhalt gerade gespeichert wird. Der erste Impuls könnte deshalb sein (und war es bei mir), die Aktion auszuführen, wenn isSavingPost()
wahr ist, allerdings ist der Inhalt dann noch nicht gespeichert, weil er ja gerade erst gespeichert wird.
Wir müssen also unsere Aktion ausführen, wenn isSavingPost()
nicht mehr wahr ist (diese einleuchtende Lösung habe ich aus einem Gutenberg-GitHub-Issue-Kommentar). Und das geht so:
( function() {
wp.domReady( function() {
var needsCheck = false;
// Listen to changes in the editor.
wp.data.subscribe( function() {
if ( wp.data.select( 'core/editor' ).isSavingPost() ) {
needsCheck = true;
} else if ( needsCheck ) {
needsCheck = false;
// Do action after save.
}
} );
} );
}() );
Code-Sprache: JavaScript (javascript)
In Zeile 3 setzen wir die needsCheck
-Variable auf false
und beginnen in Zeile 6, alle Änderungen des Editors zu überwachen. Wenn der Inhalt nun gerade gespeichert wird, setzen wir needsCheck
auf true
, und wenn der Inhalt nicht gerade gespeichert wird, aber needsCheck
wahr ist, führen wir unsere Aktion aus und setzen needsCheck
wieder auf false
.
Somit wird unsere Aktion immer ausgeführt, wenn isSavingPost()
von true
wieder auf false
springt, also wenn der Inhalt nicht mehr gespeichert wird, sondern gespeichert ist.
Mentions