web-dev-qa-db-fra.com

Télécharger un fichier multimédia via FTP puis créer une pièce jointe en pièce jointe?

J'ai besoin de télécharger une très grande vidéo. Je ne peux pas le télécharger via le programme de téléchargement intégré car mon fichier upload_max_filesize est défini sur 2 Mo seulement et je ne parviens pas à le remplacer. reflète mes changements)

Lorsque j'essaie d'utiliser l'outil de téléchargement basé sur un navigateur, je reçois le message suivant:

La ressource demandée /wp-admin/media-new.php n'autorise pas les données de requête avec POST requêtes, ou la quantité de données fournie dans la requête dépasse la limite de capacité.

Comment télécharger un fichier manuellement via FTP et le faire apparaître dans la médiathèque?

2

Oui, le plugin @Squideyes suggère que , est parfaitement correct et devrait faire l'affaire.

Cependant, je n'aime pas que les réponses link-to-plug-in, alors voici la mine.

Si vous téléchargez le fichier dans un sous-dossier du dossier de téléchargement WordPress (par défaut, wp-content/uploads, mais peut être facilement modifié), le fichier convertirun fichier à partir de là en pièce jointe est assez simple via le code, il suffit d'appeler avec arguments appropriés:

le code prêt à copier-coller est disponible dans Codex ici , et copié ci-dessous:

<?php
// $filename should be the path to a file in the upload directory.
$filename = '/path/to/uploads/2013/03/filname.jpg';
// The ID of the post this attachment is for.
$parent_post_id = 37;
// Check the type of tile. We'll use this as the 'post_mime_type'.
$filetype = wp_check_filetype( basename( $filename ), null );
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
// Prepare an array of post data for the attachment.
$attachment = array(
  'guid'           => $wp_upload_dir['url'] . '/' . basename( $filename ), 
  'post_mime_type' => $filetype['type'],
  'post_title'     => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
  'post_content'   => '',
  'post_status'    => 'inherit'
);
// Insert the attachment.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );
// Make sure that this file is included
require_once( ABSPATH . 'wp-admin/includes/image.php' );
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );

Cependant, un tel code sans moyen de passer dynamiquement un chemin de fichier à charger est plutôt inutile, mais créer une interface utilisateur très simple pour la portée est assez simple.

Le flux de travail devrait être:

  1. Accrochez-vous quelque part pour sortir un formulaire dans la page upload.php. En utilisant 'admin_notices' le formulaire sera imprimé en haut de la page. Le formulaire enverra la demande à la même page
  2. Hook 'load-upload.php' pour vérifier la demande POST, effectuez des vérifications (nonce, capacité de l'utilisateur, existence du fichier, vérifiez si le fichier est déjà attaché) et utilisez enfin le code du Codex pour créer le post joint
  3. utilisez 'admin_notices' hook pour générer un retour pour l'utilisateur. Dans les deux cas, la pièce jointe est créée ou quelque chose se passe mal.

La partie la plus difficile de ce flux de travail est la création de la pièce jointe. Pour cela, vous disposez déjà du code. Les autres parties, qui vous aident à vous-même avec le lien que j'ai fourni, devraient être très simples.

Cependant, j'ai créé un Gist à 3 fichiers, avec un plugin fonctionnel qui fait exactement ce que dit le workflow ci-dessus, trouvez-le ici .

Là, j'ai ajouté quelques lignes de javascript pour permettre d'afficher/masquer le formulaire à l'intérieur de upload.php.

Ci-dessous, vous pouvez voir comment fonctionne mon plugin:

Plugin that create an attachment post from a file already uploaded

5
gmazzap

Essayez ce plugin: http://wordpress.org/plugins/add-from-server

Il vous permet de télécharger le fichier via un FTP, puis de l'importer via admin. Le plugin enregistre le fichier multimédia dans la base de données.

0
Sam