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_IDe $dataessa é 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_statuse $post(object).
- Em seguida, existem outros 2 ganchos de transição acionados, mas eles são nomeados dinamicamente, significa que a ação efetiva acionada depende do status antigo e do novo post.
"{$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_IDe $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)
- Outro gancho dinâmico:
"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 $updateque é 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.
- Finalmente, você tem '
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_postou wp_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_actionchamada.
Por exemplo, se você quiser usar o '$update'argumento (que é o terceiro) do 'save_post'gancho, precisará adicionar 3como $accepted_argsparâmetro add_action( consulte a documentação ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
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:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
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.
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.