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).
- 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_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)
- 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 $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.
- 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_post
ou 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_action
chamada.
Por exemplo, se você quiser usar o '$update'
argumento (que é o terceiro) do 'save_post'
gancho, precisará adicionar 3
como $accepted_args
parâ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.