あなたが更新をヒットしたときに、投稿日(-1年)を更新しようとしています。しかしそれは無限ループを引き起こします。
これを行う他の方法はありますか?
ありがとう。
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);
無限になる理由は、投稿を保存するたびにchange_year ...を呼び出してからwp_update_post ...を呼び出してsave_postフィルタを起動するためです。
いくつかのレビューと調査の後、私はあなたがおそらくsave_postフィルタを避けるべきであると思います。
このフィルタを使用してみてください。 http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_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 );
それは私が保存し 'RAWR!'を追加した投稿をすべて取ります。文字列の末尾まで。
お役に立てれば。