Sign up ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

im trying to update a posts date (-1 year), when you hit update. but it causes an infinite loop.

any other ways of doing this?


function change_year($post_id, $post){
if ( $post->post_type == 'post' ) {
    $format = 'Y-m-d H:i:s'; 
    $id = $post->ID;
    $old_date = $post->post_date;
    $old_gmt_date = $post->post_date_gmt;
    $new_date = date( $format, strtotime( '-1 year' , strtotime( $old_date ) ) );
    $new_date_gmt = date( $format, strtotime( '-1 year' , strtotime( $old_gmt_date ) ) );

    $new_values = array (
        'ID' => $id,
        'post_date' => $new_date,
        'post_date_gmt' => $new_date_gmt

    wp_update_post( $new_values );

add_filter('save_post', 'change_year',10,2);
share|improve this question
I would like to add some more info - the solution above makes changes to EVERY post, even if it is e.g. publishing the post by the admin in the backend. See my answer here for more details: – Asped Sep 12 '13 at 23:12

1 Answer 1

up vote 7 down vote accepted

The reason it's going to be infinite is that every time you save the post, it's calling change_year...which then calls wp_update_post ... which fires the save_post filter.

After some review and research, I'm thinking that you should probably avoid the save_post filter.

Try using this filter:

It gives you really what you want.

Here's an example of it editing posted data:

function filter_handler( $data , $postarr ) {
    $data[ 'post_title' ] = $postarr[ 'post_title' ] . 'RAWR!';
    return $data;
add_filter( 'wp_insert_post_data' , 'filter_handler' , '99', 2 );

That will take any post that I save and add 'RAWR!' to the end of the string.

Hope this helps.

share|improve this answer
just returning doesnt actually modify the time/date of the post – chrismccoy Nov 10 '11 at 3:28
I've updated the answer, let me know if that helps. – Sterling Hamilton Nov 10 '11 at 18:57

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.