对SAVE_POST使用wp_更新_POST

时间:2011-11-09 作者:chrismccoy

当你点击更新时,我正在尝试更新帖子日期(-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);

1 个回复
最合适的回答,由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!”到字符串的末尾。

希望这有帮助。

结束

相关推荐

Plugin to Link Posts by Title

我正在寻找一个插件,可以让我通过标题链接到帖子。也就是说,当我单击编辑器中的链接图标(或其他图标)时,我会看到一个下拉列表,其中包含要链接的帖子,而不是输入URL。我选择一个,按OK,然后tada!链接已完成。我还希望链接查看ID;因此,如果我更改了目标页面的标题、post-slug或permalink中可能包含的任何其他功能,那么该链接“足够聪明”,仍然可以链接到正确的页面。外面有这样的东西吗?我什么都找不到。