Intento enganchar cuando se actualiza la publicación, pero todos los enganches que intento nunca se ejecutan, excepto updated_post_meta
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
He intentado esto add_action('save_post', 'my_function');
pero no se hizo eco de ninguna identificación, o tal vez este mensaje ya se repite pero nunca se procesa debido al encabezado de redireccionamiento enviado.
save_post
, ¿es un error tipográfico aquí o estaba en tu código original? Además, habilite la depuración durante el desarrollo.Respuestas:
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)."{$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)"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.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
owp_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 agregarlo3
como$accepted_args
parámetroadd_action
( ver documentos ):Ú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:
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í.
fuente
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 qué la acción 'save_post' se ejecuta en Agregar nuevo en lugar de en Publicar? Para hacer la publicación de borrador automático, supongo.¿Por qué no enganchar
post_updated_messages
? De esa manera, puede mostrar este mensaje al igual que la publicación predeterminada de WordPress actualizada.Busque un ejemplo aquí:
http://codex.wordpress.org/Function_Reference/register_post_type
debajo
post_updated_messages
fuente