Cuando se actualiza una publicación, hay algunos ganchos que se activan:
'pre_post_update'
es una acción disparada justo antes de que se actualice la publicación, el argumento pasado es 2: $post_ID
y $data
esa es una matriz de todas las otras columnas de la base de datos de la tabla de publicación
'transition_post_status'
es un gancho activado en la actualización y pasa 3 argumentos: $ new_post_status $old_post_status
y $post
(objeto).
- Luego, hay otros 2 ganchos de transición disparados, pero tienen un nombre dinámico, lo que significa que la acción efectiva disparada depende del estado de publicación anterior y nuevo.
"{$old_status}_to_{$new_status}"
y "{$new_status}_{$post->post_type}"
. Primero pase el único objeto de publicación como argumento, el segundo pase el id de publicación y el objeto de publicación. Encuentra documentación aquí .
'edit_post'
que pasan 2 argumentos: $post_ID
y $post
(objeto)
'post_updated'
que pase 3 argumentos: $post_ID
, $post_after
(objeto poste después de la actualización), $post_before
(objeto poste antes de la actualización)
- Otro gancho dinámica:
"save_post_{$post->post_type}"
que depende del tipo de mensaje, por ejemplo, para mensajes estándar es 'save_post_post'
y para las páginas es 'save_post_page'
, este gancho pase 3 argumentos: $post_ID
, $post
(objeto) y $update
que es un valor booleano (verdadero o falso) que es cierto cuando se realiza una actualización, en De hecho, este gancho se dispara también cuando se guarda una publicación por primera vez.
- '
save_post
' que se activa tanto en la actualización como en el primer guardado, y pasa los mismos 3 argumentos del enlace anterior.
- '
save_post_{$post_type}
' que se activa tanto en la actualización como en el primer guardado, y pasa los mismos primeros 2 argumentos del enlace anterior.
- Finalmente tienes '
wp_insert_post
' , que se dispara tanto en la actualización como en el primer guardado, y pasa los mismos 3 argumentos de los 2 ganchos anteriores.
Estos enlaces se activan cada vez que se actualiza una publicación, tanto a través de páginas de administración en el backend como cuando se actualizan "manualmente" mediante las funciones wp_update_post
o wp_insert_post
.
Cuando la publicación se actualiza utilizando páginas de administración, se activan ganchos adicionales, un ejemplo es 'update_post_redirect'
o 'post_updated_messages'
. (Vea esto y las respuestas de este WPSE para ejemplos de uso).
Tenga en cuenta que si desea utilizar algunos argumentos de ganchos, ese no es el primero, debe declararlo explícitamente en la add_action
llamada.
Por ejemplo, si desea utilizar el '$update'
argumento (que es el tercero) del 'save_post'
gancho, debe agregarlo 3
como $accepted_args
parámetro add_action
( ver 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 nota sobre el tiempo : debe estar seguro de que add_action
se llama antes de que se active la acción, o no hará nada.
Por ejemplo, este código:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
no hará nada, porque la acción se agrega después de que se dispara el gancho. Aquí es fácil reconocerlo, en el mundo real el código no siempre es así.
save_post
, ¿es un error tipográfico aquí o estaba en tu código original? Además, habilite la depuración durante el desarrollo.