Eu tento ligar quando o post é atualizado, mas todos os cabos que eu tento nunca são executados, exceto updated_post_meta
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
Eu tentei isso, add_action('save_post', 'my_function');
mas nenhum ID foi emitido, ou talvez essa mensagem já seja reproduzida, mas nunca é processada devido ao envio do cabeçalho de redirecionamento.
save_post
, isso é um erro de digitação aqui ou estava no seu código original? Além disso, ative a depuração durante o desenvolvimento.Respostas:
Quando uma postagem é atualizada, existem alguns ganchos disparados:
'pre_post_update'
é uma ação disparada imediatamente antes da atualização da postagem, o argumento passado é 2:$post_ID
e$data
essa é uma matriz de todas as outras colunas do banco de dados da tabela de postagem'transition_post_status'
é um gancho acionado na atualização e transmite 3 argumentos: $ new_post_status$old_post_status
e$post
(object)."{$old_status}_to_{$new_status}"
e"{$new_status}_{$post->post_type}"
. Primeiro passe o único objeto de postagem como argumento, o segundo passe o ID da postagem e o objeto de postagem. Encontre a documentação aqui .'edit_post'
que passam 2 argumentos:$post_ID
e$post
(objeto)'post_updated'
que passam 3 argumentos:$post_ID
,$post_after
(objeto pós após a atualização),$post_before
(objeto post antes da atualização)"save_post_{$post->post_type}"
que depende do tipo de post, por exemplo, para mensagens padrão é'save_post_post'
e páginas é'save_post_page'
, esta passagem gancho 3 argumentos:$post_ID
,$post
(objeto) e$update
que é um booleano (verdadeiro ou falso) que é verdadeiro quando você executar uma atualização, em Este gancho também é acionado quando uma postagem é salva pela primeira vez.save_post
' que é acionado na atualização e na primeira gravação e passa os mesmos 3 argumentos do gancho anterior.save_post_{$post_type}
' que é acionado na atualização e no primeiro salvamento e passa os mesmos 2 primeiros argumentos do gancho anterior.wp_insert_post
' , que é acionado na atualização e na primeira gravação e passa os mesmos 3 argumentos dos 2 ganchos anteriores.Esses ganchos são acionados toda vez que uma postagem é atualizada, tanto nas páginas de administração no back-end quanto nas atualizações "manualmente" usando as funções
wp_update_post
ouwp_insert_post
.Quando a postagem é atualizada usando as páginas de administração, há ganchos adicionais acionados, um exemplo é
'update_post_redirect'
ou'post_updated_messages'
. (Veja esta e esta resposta da WPSE para exemplos de uso).Observe que, se você quiser fazer uso de algum argumento hooks, esse não é o primeiro, você deve declará-lo explicitamente na
add_action
chamada.Por exemplo, se você quiser usar o
'$update'
argumento (que é o terceiro) do'save_post'
gancho, precisará adicionar3
como$accepted_args
parâmetroadd_action
( consulte a documentação ):A última nota diz respeito ao tempo : você deve ter certeza de que
add_action
é chamado antes que a ação seja acionada ou ela não fará nada.Por exemplo, este código:
não fará nada, porque a ação é adicionada após o disparo do gancho. Aqui é simples reconhecê-lo, no código do mundo real nem sempre é assim.
fonte
function save_post_test( $post_id, $post, $update ) { print ' post_id : '; var_export( $post_id ); print ' post : '; var_export( $post ); print ' update : '; var_export( $update ); wp_die( 'save_post hook runs when you click Add New..' ); } add_action( 'save_post', 'save_post_test', 10, 3 );
Por que a ação 'save_post' é executada em Adicionar novo em vez de em Publicar? Para fazer a postagem de rascunho automático, suponho.Por que não ligar
post_updated_messages
. Dessa forma, você pode mostrar esta mensagem como o post padrão do wordpress atualizado.Procure um exemplo aqui:
http://codex.wordpress.org/Function_Reference/register_post_type
debaixo
post_updated_messages
fonte