web-dev-qa-db-fra.com

Comment enregistrer des images téléchargées via FTP dans une médiathèque?

J'utilise mon propre fichier upload.php pour télécharger des images sur:

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

Cela fonctionne comme il le devrait avec cette exception que les images téléchargées sur uploads/2012/08/ n'apparaissent pas dans Media Library. Existe-t-il une fonction pour les "enregistrer" ici et dans la base de données de WP?

3
Paul

C'est parce que vous ne les enregistrez pas en tant que type de média. Chaque téléchargement est un article WordPress de type attachment.

Pour commencer, ce serait quelque chose comme ça:

$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);

Cela devrait créer une entrée dans votre panneau Média et également convertir l'image à toutes les tailles que vous utilisez dans votre thème.

Une bonne option pour vous consiste à insérer la procédure ci-dessus dans votre upload.php. Pour cela, vous devez également inclure les fichiers requis pour WordPress. Sinon, vous devrez dire à WordPress de l'exécuter d'une manière ou d'une autre, par exemple par une requête $_REQUEST ou par un travail cron.

6
vmassuchetto

Je pense que vous devriez commencer à creuser media_handle_upload function. Sa description dans le codex est vague, alors essayez de comprendre qu'il s'agit de code .

Vous pouvez utiliser cette fonction pour gérer même les téléchargements ou saisir certaines parties de son code pour les intégrer au vôtre.

0
nvartolomei