在 WordPress 中,我使用 wp_editor 来允许用户使用编辑器和媒体上传器。我想避免创建帖子的自动保存,但问题是在保存帖子之前,附件没有要附加的 post_id。
我想知道是否有办法上传媒体,然后在保存后将其附加到新帖子中。
我可以在保存帖子时将临时 ID 传递给附件以识别它吗?或者也许在上传后获取附件 ID?
想法赞赏!
经过一番大惊小怪,我得出的结论是,预先发布帖子ID是必要的。
我最终做了 WordPress Post Edit 屏幕所做的事情。一旦用户输入了帖子标题,我就使用了一点 jQuery 和 Ajax 来动态创建自动保存。
自动保存完成后,它将媒体上传 iframe href 替换为包含自动保存帖子 ID 的内容。
所以,仍有可能会有一些废弃的帖子草稿,但至少需要通过输入帖子标题来做出一些承诺。
您可以创建未附加的媒体,然后将其附加到帖子中:
function file_into_database( $filetype, $filename, $target )
{
$title = $this->clean_file_info[ 'basename' ];
$attachment = array
(
'post_mime_type' => $filetype
, 'post_title' => $title
, 'post_content' => ''
, 'post_status' => 'inherit'
, 'guid' => $target[ 'uri' ]
, 'post_author' => $this->author
);
$attach_id = wp_insert_attachment( $attachment, $target[ 'path' ] );
$attach_data = wp_generate_attachment_metadata( $attach_id, $target[ 'path' ] );
wp_update_attachment_metadata( $attach_id, $attach_data );
return $attach_id;
}
然后稍后附上它:
wp_update_post
(
array
(
'ID' => $attachment[ 'id' ]
, 'post_parent' => $id_new_post
)
)
我只是在一个插件中找到了这个,没有找到它的文档,所以我不知道是否有任何副作用,但我没有遇到任何副作用。另请注意,如果帖子最终没有发布,您将不会得到挥之不去的自动保存,但您可能会得到挥之不去的附件,因此您可能必须安排在将来的某个时间删除它们,并在何时以及如果帖子被保存。