我们可以谈谈WordPress修订吗?如何保存WordPress自定义帖子类型的元数据修订?
我今天和其他日子已经搜索了无数个小时,我找到了一篇关于它的好文章,我将在下面引用它。我相信这可能对许多人有所帮助,主要是因为没有太多讨论这个功能以及如何保存元数据字段的修订版。不幸的是,WordPress版本功能似乎在不久之前就被遗忘了。
我的案例
在我的特定情况下,我正在创建一个Wiki样式的插件来管理自定义帖子类型的信息。除了自定义帖子类型的基本字段(标题,作者,内容,特色图片),我还有一些其他字段,我想跟踪版本。
我的尝试
正如我已经提到过的,我在2012年从约翰·布莱克伯恩那里找到了article(并感谢约翰!),这使我指出了正确的方向。但是,我无法让它发挥作用。我可能会遗漏一些东西,也许我对WordPress的修改工作有误解,或者我只是需要睡在它上面它会在早上来找我。谁知道,但我真的需要你的帮助。这是我到目前为止所得到的:
要保存单个字段的元数据修订版,请直接从上面提到的文章:
function my_plugin_save_post( $post_id, $post ) {
if ( $parent_id = wp_is_post_revision( $post_id ) ) {
$parent = get_post( $parent_id );
$my_meta = get_post_meta( $parent->ID, 'my_meta', true );
if ( false !== $my_meta )
add_metadata( 'post', $post_id, 'my_meta', $my_meta );
}
} add_action( 'save_post', 'my_plugin_save_post' );
看起来很直接,对吗?但是猜猜看,它在if ( $parent_id) {...}
条件下失败了。因为$ post_id不是修订版。如果它永远不是修订版,那么这个假设是如何工作的?我不明白。我认为钩子' save_post'发送当前的$ post_id而不是子修订版。我究竟做错了什么?
答案 0 :(得分:1)
保存帖子时会触发save_post
挂钩,但它不仅会触发实际帖子,还会触发同时插入的修订。
因此,当WordPress将实际帖子保存到数据库时,wp_is_post_revision( $post_id )
将返回false,并且在插入修订时它将返回true。这是条件语句中的代码将触发的时间。