setcookie
Estoy buscando un enlace de administrador para las publicaciones que se activan después de que se ha guardado la publicación. El problema: el save_post
no contiene los datos ya modificados en el objeto de publicación. Los nuevos cambios solo se pueden encontrar en el $_POST
formación. Pero necesito una forma de actualizar el enlace permanente a una API externa una vez que post_name
cambios. Pero no funcionará ya que el $post
el objeto sigue siendo el antiguo antes de la acción de guardar.
Debería poder conectarse después de que la publicación se haya actualizado utilizando el argumento de prioridad (establecido en 20 en este ejemplo):
add_action( 'save_post', 'your_function', 20, 1 );
function your_function( $post_id ) {
// this should be the updated post object
$post = get_post( $post_id );
}
Creo que el método más adecuado es consultar los valores antiguos de la base de datos y comparar los valores con $_POST
valores de matriz.
Aquí está el enlace que debería ayudarlo a leer los valores de la base de datos.
http://codex.wordpress.org/wpdb#query_-_Run_Any_Query_on_the_Database
PD: Por supuesto, debe hacer esta comparación “antes” de guardar los nuevos valores en la base de datos.
Gleb Kemarsky
Desde WordPress 3.0.0 el post_updated
el gancho está disponible. Es útil saber qué ha cambiado en la publicación después de la actualización. Puedes usar el ejemplo en el WP Codex como muestra.
add_action( 'post_updated', 'check_updated_post_name', 10, 3 );
function check_updated_post_name( $post_ID, $post_after, $post_before ) {
if ( $post_after->post_name != $post_before->post_name ) {
// do what you need
}
}
Y si se acaba de insertar una publicación, puede usar save_post
o save_post_{$post->post_type}
manos. Verifique el valor del tercer argumento para asegurarse de que la publicación sea nueva.
add_action( 'save_post', 'check_new_post_name', 10, 3 );
function check_new_post_name( $post_ID, $post, $update ) {
if ( ! $update ) {
// do what you need
}
}