我想更新Wordpess Hook的帖子的PostMeta值,但我无法对其进行更新。这是我的代码
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
之后不久将死亡放置并检查DB时,它可以正常工作,但是回到编辑帖子页面后,它会恢复。
基本上它正在更新帖子meta,但是之后,还有另一个默认的wordpress函数运行并将其重置为旧值。
任何专家建议,为什么会这样?
问题是因为在实际保存帖子的metas之前触发了钩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