当你点击更新时,我正在尝试更新帖子日期(-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);
最合适的回答,由SO网友:Sterling Hamilton 整理而成
它将是无限的原因是,每次你保存帖子时,它都在呼叫change_year
...然后调用wp_update_post
... 激发了save_post
滤器
经过一些回顾和研究,我想你应该避免save_post
滤器
尝试使用此筛选器:http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data
它给你真正想要的东西。
以下是it编辑发布数据的示例:
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!”到字符串的末尾。
希望这有帮助。