5

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?

thanks.

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);
  • 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: wordpress.stackexchange.com/a/113967/37612 – Asped Sep 12 '13 at 23:12
7

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: http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

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.

  • 1
    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 clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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