问题可能是$post_id
通过传递给的参数save_post_$post_type
钩子不同$post_id
作为原始帖子-它是$post_id
编辑帖子时创建的临时帖子的。
要确认这一点,请执行以下操作:
add_filter( \'pre_post_update\', \'wpse_pre_post_update\', 10, 3 );
add_filter( \'save_post\', \'wpse_save_post\', 10, 1 );
function wpse_pre_post_update( $post_id, $post, $update ) {
echo $post_id . \'<br>\';
}
function wpse_save_post( $post_id ) {
echo $post_id;
wp_die();
}
如果您试图添加一个新帖子,那么pre\\u post\\u update钩子不会启动,WP将在带您进入编辑屏幕之前终止。注释掉
wp_die()
行,然后单击“添加新”链接。现在,取消注释
wp_die()
并保存帖子。在WP死之前,应输出两个不相同的ID。
第一个ID是实际帖子的ID。第二个ID是临时职位的ID。
我真的不明白WordPress为什么这样做,我也不知道它是否总是这样。但在运行新安装的WP 4.7.3时,它有这种行为。
除非你出于某种原因need 要在保存帖子后更新选项,我将使用pre_post_update
改为挂钩。
add_filter( \'pre_post_update\', \'update_promo_tag_id\', 10, 3 );
function update_promo_tag_id( $post_id, $post, $update ) {
if( \'promo\' !== $post->post_type ) {
return $post_id;
}
update_field( \'one_time_tag_id\', \'updated!\', $post_id );
return $post_id;
}