我本质上是一个非常简单的问题,但唉,我是WP开发的新手。 每当创建帖子时,我都想将该新帖子的 POST ID 保存在名为 meta_post_id 的自定义字段中。
为什么?稍后在火山口表单中,我想使用此字段来确保 Caldera 更新现有帖子而不是创建新帖子,并且除了我找不到第一次进入meta_post_id字段获取 POST ID 的方法之外,所有工作都有效。如果我手动将其放入,那么其余的都可以工作。
建议? 一些示例代码会很棒!
以下是在新帖子上使用WordPress钩子的方法...
add_action('wp_insert_post', function ($post_id, $post, $update) {
if (!in_array($post->post_type, ['revision']) && !in_array($post->post_status, ['auto-draft']) && $update) {
update_post_meta($post_id, 'meta_post_id', $post_id);
}
}, 10, 3);
这实际上比这有点棘手,因为WordPress认为对帖子的任何更新都是新帖子。这是因为它在后台保存了一个修订版(一个帖子类型为修订版的新帖子(,因此我们需要过滤掉一些场景才能准确地得到你想要的。所以我需要更多的细节来优化它。尽管如此,这对于您要做的事情来说应该足够了。唯一的缺点是,这可能会比必要的多运行几次,但这不会影响您要做的事情。
我将内容保留为in_array检查,因此如有必要,您可以在以后轻松过滤掉误报。例如,您可能还想过滤掉"草稿"的帖子状态。