WordPress の DB に添付ファイル情報だけを追加するメモ書きです。
管理画面上から添付ファイルの操作するには、添付ファイル情報が DB に保存されている必要があるのですが、FTP ソフト等で追加してしまうとこの情報がないので WordPress からは操作できません。
なので、後から添付ファイル情報だけを登録したいと思っているのですが、調べると下記 3 つの関数を使って登録する必要があるようです。
- wp_insert_attachment
- wp_generate_attachment_metadata
- wp_update_attachment_metadata
公式の例を見るとこんな風に使うらしい。
$filename = '/path/sample.png'; $parent_post_id = 0; $filetype = wp_check_filetype( basename( $filename ), null ); $wp_upload_dir = wp_upload_dir(); $attachment = array( 'guid' => $wp_upload_dir['baseurl'] . $filename, 'post_mime_type' => $filetype['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $wp_upload_dir['basedir'] . $filename, $parent_post_id ); require_once( ABSPATH . 'wp-admin/includes/image.php' ); $attach_data = wp_generate_attachment_metadata( $attach_id, $wp_upload_dir['basedir'] . $filename ); wp_update_attachment_metadata( $attach_id, $attach_data );
$parent_post_id は多分、投稿した記事に関連付けさせるためのものだけど、これ設定しないと何かまずいのかな ?
それがちょっとわからないがこれを実行すると DB に添付ファイル情報が格納され、WordPress の管理画面から操作できるようになります。
全く違うサービスから WordPress に引っ越しをしたい時に覚えておくと便利な関数だと思います。