web-dev-qa-db-fra.com

Comment faire pour qu'une image transférée via FTP ou un script apparaisse dans Media Manager?

J'ai un plugin qui transfère certains fichiers dans le dossier uploads du site sur lequel le plugin est installé.

Cela fonctionne bien, cependant, les images n'apparaissent pas dans Media Manager. Je m'attends à une inscription de base de données est impliqué.

Étant donné le script ci-dessous qui copie les fichiers dans le répertoire, quelle commande dois-je ajouter à la boucle pour enregistrer chaque image pour le gestionnaire de médias?

    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

ajoutez ceci à votre pour chacun et $ nom de fichier à chaque fichier,

 $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

Avez-vous regardé la fonction media_handle_sideload () ? Cela semble être ce que vous cherchez.

Il fonctionne essentiellement de la même manière que media_handle_upload (), mais prend un fichier déjà présent sur le serveur local, le déplace vers le répertoire de téléchargement actuel et génère l’enregistrement de publication nécessaire pour l’ajouter au Media Manager.

6
goldenapples