it-swarm.com.de

Wie wird ein Bild per FTP oder Skript übertragen, um im Media Manager angezeigt zu werden?

Ich habe ein Plugin, das einige Dateien in den Upload-Ordner der Site überträgt, auf der das Plugin installiert ist.

Es funktioniert einwandfrei, die Bilder werden jedoch nicht im Medien-Manager angezeigt. Ich gehe davon aus, dass eine Datenbankregistrierung erforderlich ist.

Welchen Befehl muss ich angesichts des Skripts, mit dem die Dateien in das Verzeichnis kopiert werden, zur Schleife hinzufügen, um jedes Bild für den Medienmanager zu registrieren?

    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

fügen Sie dies für jeden und $ Dateinamen zu jeder Datei hinzu,

 $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

Haben Sie sich die Funktion media_handle_sideload () angesehen? Es scheint das zu sein, wonach Sie suchen.

Es funktioniert im Wesentlichen genauso wie media_handle_upload (), nimmt jedoch eine Datei, die sich bereits auf dem lokalen Server befindet, verschiebt sie in das aktuelle Upload-Verzeichnis und generiert den Post-Datensatz, der zum Hinzufügen zum Media Manager erforderlich ist.

6
goldenapples