Portanto, eu tenho uma metabox que desejo acionar algum Javascript quando uma postagem é salva (para atualizar a página nesse caso de uso).
No Classic Editor, isso pode ser feito por meio de um redirecionamento simples conectado a save_post
(com alta prioridade)
Mas como o Gutenberg converte o processo de economia de metaboxes existentes em chamadas individuais AJAX agora, ele precisa ser javascript, então como faço para:
Ouvir um evento em que todos os processos de salvamento estão completos e acionar o javascript? Se sim, como esse evento é chamado? Existe uma referência a esses eventos em algum lugar ainda? OU
Desencadear javascript dentro do processo AJAX de economia de metabox, que pode verificar o estado do processo de economia da página pai antes de continuar?
fonte
wp.data
armazenamentos de dadoswp.data.select('core/editor').isSavingPost()
... esse tipo de acesso não está documentado em nenhum lugar que eu possa ver ... e também parece não confiável, pois retornafalse
depois que a postagem é salva pela primeira vez (antes que seja indefinida) se o editor ainda está salvando ou não. facepalmRespostas:
Não tenho certeza se existe uma maneira melhor, mas estou ouvindo, em
subscribe
vez de adicionar um ouvinte de evento ao botão:Documentos oficiais dos dados do editor de postagem: https://wordpress.org/gutenberg/handbook/designers-developers/developers/data/data-core-editor/
fonte
subscribe
método? isso faz parte dawp.data
função? Não o vejo mencionado nos documentos.subscribe
é um método do módulo wp.data . Abra o console ao editar uma postagem no Gutenberg e executewp.data
. Isso lista todos os métodos disponíveis do módulo de dados.wp.data
modelo. está de volta ao PHP (e editor clássico) para mim.Ok, muito mais solução hacky do que eu queria, mas funcionou ...
Aqui está uma maneira um pouco simplificada e abstrata de fazer isso do meu código, caso alguém precise fazer o mesmo (como eu tenho certeza que mais plugins farão no futuro próximo).
... só precisa mudar
metabox_input_id
etrigger_value
combinar conforme necessário. :-)fonte
Você precisa coletar a função de cancelamento de assinatura da assinatura e da chamada para evitar a chamada em tempo múltiplo.
fonte