Quando uma postagem é atualizada, alguns ganchos são acionados:
-
'pre_post_update'
é uma ação acionada apenas antes de a postagem ser atualizada, o argumento aprovado é 2:$post_ID
e$data
que é uma matriz de all as outras colunas do banco de dados da tabela de postagens -
'transition_post_status'
é um gancho disparado na atualização e passa 3 argumentos: $ new_post_status,$old_post_status
e$post
(object). - Em seguida, há outros dois ganchos de transição acionados, mas eles são dinâmicos, o que significa que a ação efetiva acionada depende do status antigo e do novo status.
"{$old_status}_to_{$new_status}"
e"{$new_status}_{$post->post_type}"
. Primeiro passe o único objeto post como argumento, o segundo passe o id do post e o objeto post. Encontre a documentação aqui . -
'edit_post'
que passa 2 argumentos:$post_ID
e$post
(objeto) -
'post_updated'
que passa 3 argumentos:$post_ID
,$post_after
(postar objeto após a atualização),$post_before
(postar objeto antes da atualização) - Outro gancho dinâmico:
"save_post_{$post->post_type}"
que depende do tipo de postagem, por exemplo para postagens padrão é'save_post_post'
e para páginas é'save_post_page'
, este gancho passa 3 argumentos:$post_ID
,$post
(objeto) e$update
que é um booleano (verdadeiro ou falso) que é verdadeiro quando você executa uma atualização, na verdade, esse gancho é disparado também quando uma postagem é salva pela primeira vez. -
'
save_post
' que é acionado tanto na atualização quanto na primeira gravação e passa os mesmos 3 argumentos do gancho anterior. -
'
save_post_{$post_type}
' que é acionado tanto na atualização quanto na primeira gravação e passa os mesmos 2 primeiros argumentos do gancho anterior. - Finalmente, você tem '
wp_insert_post
' , que é acionado tanto na atualização quanto na primeira gravação, e passa os mesmos 3 argumentos dos dois ganchos anteriores.
Esse gancho é acionado sempre que um post é atualizado, tanto por meio de páginas de administração no backend quanto por meio de atualizações "manualmente" usando wp_update_post
ou wp_insert_post
funções.
Quando a postagem é atualizada usando páginas de administração, ganchos adicionais são acionados. Um exemplo é 'update_post_redirect'
ou 'post_updated_messages'
. (Veja este e este WPSE responde por exemplos de uso).
Note que se você quiser fazer uso de algum argumento de hooks, que não é o primeiro, você deve declará-lo explicitamente em add_action
call.
Por exemplo Se você quiser usar o argumento '$update'
(ou seja, o terceiro) do gancho 'save_post'
, será necessário adicionar 3
como $accepted_args
param em add_action
(ver os documentos ):
// 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 );
}
Última observação tempo : você deve ter certeza que add_action
é chamado antes a ação é acionada, ou 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 depois que o gancho é disparado. Aqui é simples reconhecê-lo, no mundo real o código nem sempre é assim.