在更新之前获取POST元数据(在SAVE_POST期间)

时间:2017-02-26 作者:T.Todua

假设我在post editor上有自定义字段,并且我将值从AAAZZZ.. :

add_action(\'save_post\', 
   function($post){
      $value = get_post_meta($post->ID, \'mykey\');

   }
, 1);
如何获取旧值(AAA) 那个元钥匙的?在save\\u post(甚至更早的第一优先级)期间,我得到ZZZ

3 个回复
最合适的回答,由SO网友:Anwer AR 整理而成

save_post 每当创建或更新帖子或页面时运行,可以从导入、帖子/页面编辑表单、xmlrpc或通过电子邮件发布。操作函数参数:post ID和post对象。将数据保存到数据库后运行。

以上段落引自WP Codex。

因此,您不能使用此挂钩获取旧值,因为它在将新值保存到DB后激发。WP有另一个名为wp_insert_post但遗憾的是,这个钩子和save_post

或者,您可以使用过滤器来完成工作。WP在保存时或保存到DB之前提供很少的过滤器来编辑帖子。喜欢wp_insert_post_data &;content_save_pre 我想可能对你有用。

Update

here 是关于这个话题的另一个讨论,可能对你有帮助。

SO网友:T.Todua

我的技巧是:

1) 创建了一个隐藏的元框,我在其中插入了输入,值为current_meta_value
2)在save_post 我核对了一下new_meta_value.

仅此而已。

SO网友:Zeth

这可能违反了WordPress规则或其他规定。但我做到了:

add_action( \'save_post\', \'wp258055_save_post_callback\' );

function wp258055_save_post_callback( $post_id ){
  $value_in_db = get_post_meta( $post_id, \'mykey\', true );
  $value_about_to_be_saved = $_POST[\'mykey\'];
}

相关推荐