web-dev-qa-db-ja.com

FTPでアップロードした画像をメディアライブラリに登録するにはどうすればいいですか?

私は自分のupload.phpファイルを使って画像をアップロードしています:

$upload_dir = wp_upload_dir();
$targetDir = $upload_dir['path'].'/';

uploads/2012/08/にアップロードされた画像がMedia Libraryに表示されないということを除いて、この例外はあるべきです。そこにそしてWPのデータベースにそれらを「登録」するための何らかの機能はありますか?

3
Paul

メディアタイプとして登録していないからです。すべてのアップロードはattachmentタイプのWordPress投稿です。

開始するには、それはこのようなものになります:

$file_name = 'Some Name';
$file_path = '/path/to/uploads/2012/08/04/newfile.jpg';
$file_url = 'http://url/to/uploads/2012/08/04/newfile.jpg';
$wp_filetype = wp_check_filetype($file, null);
$attachment = array(
    'guid'           => $file_url,
    'post_mime_type' => $wp_filetype['type'],
    'post_title'     => $file_name,
    'post_status'    => 'inherit',
    'post_date'      => date('Y-m-d H:i:s')
);
$attachment_id = wp_insert_attachment($attachment, $file_path);
$attachment_data = wp_generate_attachment_metadata($attachment_id, $file_path);
wp_update_attachment_metadata($attachment_id, $attachment_data);

これにより、メディアパネルにエントリが作成され、また、テーマで使用しているすべてのサイズに画像が変換されます。

あなたにとって良い選択肢は、あなたのupload.phpに上記の手続きを挿入することです。そのためには、WordPressの必須ファイルも含める必要があります。そうでなければ、WordPressにどういうわけかこれを実行するように伝えなければなりません、おそらく$_REQUESTクエリまたはcronジョブによって。

6
vmassuchetto

media_handle_upload functionを掘り下げてみるべきだと思います。それはコーデックスの漠然とした記述なのでそれを code と理解するようにしてください。

あなたはあなたのためにアップロードさえ扱うためにこの関数を使うことができます、あるいはあなたはあなた自身の中に統合するためにそのコードの一部をつかむことができます。

0
nvartolomei