我想通过wordpress钩子更新帖子的元值,但我无法更新它。这是我的代码,
function check_values($post_ID, $post_after, $post_before){
$oldFob = get_post_meta( $post_ID, 'price', true);
if($oldFob){
update_post_meta( $post_ID, 'price', 500);
}else{
add_post_meta( $post_ID, 'fob-price', 500 , true);
}
}
add_action( 'post_updated', 'check_values', 10, 3 );
当我在update_post_meta
之后很快就死了,并检查数据库,它可以工作,但在回到编辑帖子页面后,它还原。
基本上它是更新后元,但在它之后,还有另一个默认的wordpress函数运行并将其重置为旧值。
任何专家的建议,为什么会这样?
问题是因为钩子post_updated
是在实际保存帖子的元数之前触发的。
所以基本上你更新了帖子的元数据,然后帖子会在之后用请求中提交的元值更新。
要解决这个问题,你可以使用带有高数字的save_post
钩子来使钩子最后运行:
add_action('save_post', function ($post_ID) {
$oldFob = get_post_meta( $post_ID, 'price', true);
if ($oldFob) {
update_post_meta( $post_ID, 'price', 500);
} else {
add_post_meta( $post_ID, 'fob-price', 500 , true);
}
}, 100);
有关更多信息:https://codex.wordpress.org/Plugin_API/Action_Reference/save_post