Surpreende-me o fato de que minha função que aderi à save_post
ação é acionada quando clico no link "Nova postagem" no Painel do administrador. Nota - isto é antes de eu pressionar Saveou Update, e é acionado imediatamente, não após um tempo decorrido ou atualização automática.
Por outro lado, quando digito algo e pressiono os botões Publishou Updateou Save Draft, a instrução echo que coloquei no meu manipulador de ações não ecoa, portanto parece que a ação NÃO está sendo disparada em nenhum outro momento. Isso pode não estar relacionado.
Aqui está o meu código:
add_action('save_post', 'MyNS\save_event_metabox', 10, 2);
function save_event_metabox($post_id, $post){
echo "<h1>YES!</h1>";
}
Isso SIM ecoa (na parte superior da página) quando pressiono o link "Nova Postagem", mas NÃO ecoa quando digito alguma coisa e, em seguida, pressione Updateou Publishou Save Draft. Isso parece contradizer a documentação sobre a save_post
ação e a wp_insert_post()
função.
Alguém pode esclarecer isso para mim?
Respostas:
Quando você clica em 'Nova postagem', está simplesmente carregando a página
wp-admin/post-new.php
.Ao fazer isso, o WordPress sempre criará uma nova postagem (um 'Rascunho Automático') para garantir que todos os outros recursos (como upload de mídia) e plugins funcionem normalmente, mesmo antes de você salvar um rascunho ou publicar a postagem.
E isso, por sua vez, dispara
save_post
. Daí o seu eco.Entre o salvamento e o carregamento da página a seguir, o WordPress está realmente enviando um
GET
redirecionamento de volta para a mesma página, que parece transparente (você pode testemunhar isso com um monitor HTTP, como o HttpFox ).Em outras palavras;
Update
ouPublish
save_post
O redirecionamento pode parecer desnecessário (já que você pode acessar
POST
a mesma página), mas faz parte de uma técnica conhecida como Post / Redirect / Get para evitar envios de formulários duplicados .Se você estiver tentando imprimir mensagens personalizadas com base no resultado de uma função conectada
save_post
, verifique estas perguntas / respostas .* Não é estritamente verdadeiro, seu eco ocorrerá antes do envio do cabeçalho de redirecionamento, mas o navegador o descartará ou as coisas acontecem tão rapidamente que nunca são processadas.
fonte