usar wp_update_post en save_post
9 nov 2011, 23:14:33
Vistas: 4.75K
Votos: 5
Estoy intentando actualizar la fecha de un post (-1 año) cuando se pulsa actualizar, pero esto causa un bucle infinito.
¿Hay otras formas de hacer esto?
Gracias.
function cambiar_anio($post_id, $post){
if ( $post->post_type == 'post' ) {
$formato = 'Y-m-d H:i:s';
$id = $post->ID;
$fecha_antigua = $post->post_date;
$fecha_antigua_gmt = $post->post_date_gmt;
$nueva_fecha = date( $formato, strtotime( '-1 year' , strtotime( $fecha_antigua ) ) );
$nueva_fecha_gmt = date( $formato, strtotime( '-1 year' , strtotime( $fecha_antigua_gmt ) ) );
$valores_actualizados = array (
'ID' => $id,
'post_date' => $nueva_fecha,
'post_date_gmt' => $nueva_fecha_gmt
);
wp_update_post( $valores_actualizados );
}
}
add_filter('save_post', 'cambiar_anio',10,2);

chrismccoy
309
Comentarios
Todas las respuestas a la pregunta
1
2
La razón por la que se vuelve infinito es que cada vez que guardas el post, está llamando a change_year
... que luego llama a wp_update_post
... lo cual activa el filtro save_post
.
Después de revisar e investigar, creo que probablemente deberías evitar el filtro save_post
.
Intenta usar este filtro: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data
Realmente te da lo que necesitas.
Aquí tienes un ejemplo de cómo editar los datos publicados:
function filter_handler( $data , $postarr ) {
$data[ 'post_title' ] = $postarr[ 'post_title' ] . '¡GRRR!';
return $data;
}
add_filter( 'wp_insert_post_data' , 'filter_handler' , '99', 2 );
Eso tomará cualquier post que guarde y añadirá '¡GRRR!' al final de la cadena.
Espero que esto ayude.

Sterling Hamilton
889
10 nov 2011 02:21:56
Preguntas relacionadas
1
respuestas
1
respuestas
4
respuestas
1
respuestas
1
respuestas