web-dev-qa-db-ja.com

FTPまたはスクリプトで転送された画像をMedia Managerに表示する方法

プラグインがインストールされているサイトのuploadsフォルダにファイルを転送するプラグインがあります。

それはうまく動作しますが、画像はメディアマネージャに表示されません。データベース登録が関係していると思います。

以下のスクリプトでファイルをディレクトリにコピーするとしたら、各イメージをメディアマネージャに登録するためにループに追加する必要があるコマンドは何ですか?

    foreach(new RecursiveIteratorIterator($rdi) as $files) 
    {
         if ($files->isFile()) 
         {
            $imagepath = $files->getRealPath();
            $image = basename($files->getPathname());
            copy($imagepath, $my_target_folder.'/'.$image);
         }
    }
1
Scott B

これを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 );
2
Bainternet

関数 media_handle_sideload() を見ましたか?それはあなたが探しているもののようです。

基本的にはmedia_handle_upload()と同じように機能しますが、すでにローカルサーバー上にあるファイルを現在のuploadsディレクトリに移動し、それをMedia Managerに追加するために必要なpostレコードを生成します。

6
goldenapples