投稿に添付ファイルがあり、WP APIを使用して、最初の投稿から添付ファイルを削除せずに、別の投稿に添付したいと考えています。
これを行うのはそれほど簡単ではありません。私のコードでは、post_parentフィールドを新しい投稿IDの添付ファイルから変更してください。
//take all image-attachments from a post to create post for each
$images =& get_children( array (
'post_parent' => $event_id,
'post_type' => 'attachment',
'post_mime_type' => 'image'
));
if ( empty($images) ) {
// no attachments here
} else {
//handle each attachment
foreach ( $images as $attachment_id => $attachment ) {
$this->addPost( $post_id, $attachment_id, $attachment );
}
....
...
function addPost($post_id, $attach_id, $attach)
{
// Create post object
$new_post = array(
'post_title' => 'title',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post'
);
// Insert the post into the database
// create new post that want to reattach the attatchment
$this->unhookFromSavePost(); // see http://codex.wordpress.org/Plugin_API/Action_Reference/save_post#Avoiding_infinite_loops
$new_post_id = wp_insert_post( $new_post ); //get post's id
$this->hookToSavePost();
$attach->post_parent = $new_post_id; // post_id
$newAddedAttachment = wp_insert_attachment( $attach );
添付ファイルを複製して他の投稿で使用する場合は、次の手順に従ってください: wp_insert_attachment 。また、$ attachを新しいオブジェクトにコピーすることも可能ですが、このオブジェクトのIDプロパティを設定解除する必要があります。 。
$new_attach = $attach;
$new_attach->post_parent = $new_post_id;
unset($new_attach[0]); // unset first property or unset($new_attach[ID]);
wp_insert_attachment( $new_attach);
投稿編集画面にアップロードされたメディアの内側にある場合は、以前に添付されたメディアを検索して、新しい投稿に埋め込むだけです。
投稿と添付ファイルの関係はデータベースに保存されます。添付ファイルは1つの投稿にしか属することができませんが、それでも心配せずに多くの投稿に埋め込むことができます。