プラグインがインストールされているサイトのuploadsフォルダにファイルを転送するプラグインがあります。
それはうまく動作しますが、画像はメディアマネージャに表示されません。データベース登録が関係していると思います。
以下のスクリプトでファイルをディレクトリにコピーするとしたら、各イメージをメディアマネージャに登録するためにループに追加する必要があるコマンドは何ですか?
foreach(new RecursiveIteratorIterator($rdi) as $files)
{
if ($files->isFile())
{
$imagepath = $files->getRealPath();
$image = basename($files->getPathname());
copy($imagepath, $my_target_folder.'/'.$image);
}
}
これをfor eachに、$ filenameを各ファイルに追加してください。
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $filename, 0 );
// you must first include the image.php file
// for the function wp_generate_attachment_metadata() to work
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
関数 media_handle_sideload() を見ましたか?それはあなたが探しているもののようです。
基本的にはmedia_handle_upload()と同じように機能しますが、すでにローカルサーバー上にあるファイルを現在のuploadsディレクトリに移動し、それをMedia Managerに追加するために必要なpostレコードを生成します。