J'ai donc une métabox que je veux déclencher du Javascript quand un post est enregistré (pour rafraîchir la page dans ce cas d'utilisation.)
Dans Classic Editor, cela peut être fait via une simple redirection accrochée à save_post
(avec une priorité élevée)
Mais puisque Gutenberg convertit le processus d'enregistrement des métaboxes existantes en appels AJAX individuels maintenant, il doit être javascript, alors comment puis-je:
Écoutez un événement où tous les processus d'enregistrement sont terminés, puis déclenchez le javascript? Si oui, comment s'appelle cet événement? Y a-t-il encore une référence à ces événements quelque part? OU
Déclencher javascript dans le processus AJAX d'enregistrement de la métaboxe, qui peut ensuite vérifier l'état du processus d'enregistrement de la page parent avant de continuer?
la source
wp.data
les magasins de donnéeswp.data.select('core/editor').isSavingPost()
... ce type d'accès n'est pas documenté partout où je peux voir ... et il semble également peu fiable car il revientfalse
après la première sauvegarde du message (avant qu'il ne soit pas défini), que l'éditeur soit toujours en train de sauvegarder ou non. facepalmRéponses:
Je ne sais pas s'il y a une meilleure façon, mais j'écoute
subscribe
plutôt que d'ajouter un écouteur d'événements au bouton:Documents officiels des données du Post Editor: https://wordpress.org/gutenberg/handbook/designers-developers/developers/data/data-core-editor/
la source
subscribe
méthode? fait-il partie de lawp.data
fonction? Je ne le vois pas mentionné dans les documents.subscribe
est une méthode du module wp.data . Ouvrez la console lorsque vous éditez un article avec Gutenberg et exécutezwp.data
. Ceci répertorie toutes les méthodes de module de données disponibles.wp.data
modèle. c'est de retour à PHP (et à l'éditeur classique) pour moi.D'accord, donc beaucoup plus de solution hacky que je ne le voulais, mais ça a fonctionné ...
Voici une façon légèrement simplifiée et abstraite de le faire à partir de mon code, au cas où quelqu'un aurait besoin de faire de même (comme je suis sûr que plus de plugins le feront dans un avenir proche.)
... il suffit de changer
metabox_input_id
et detrigger_value
faire correspondre au besoin. :-)la source
Vous devez collecter la fonction de désabonnement de l'abonnement et de l'appel pour éviter les appels multiples.
la source