web-dev-qa-db-fra.com

Comment télécharger une ressource imagick sur un média dans wordpress

    $filePath = wp_get_attachment_url( $id );
$tempfilename = explode("/", $filePath);
$temppdffile = end($tempfilename);
$cuurentPath = plugin_dir_path( __FILE__ ).$temppdffile;
$im = new Imagick();
$im->setResolution(300, 300);
$im->readImage( $cuurentPath.'[0]'); 
$im->setImageFormat('jpg');

J'ai le code ci-dessus .. j'ai généré avec succès l'image .. $ im Mais je dois enregistrer l'image sur .. le média dans Wordpress en tant qu'image sélectionnée? Toute idée .. a tout essayé

1
Int-khab

Je ne connais pas trop Imagick, mais si vous pouvez obtenir une URL pour l'image que vous avez créée avec, le reste est assez simple d'utilisation avec la fonction media_sideload_image() de WordPress. Voici un exemple de base qui fonctionnerait à partir de la zone wp-admin (comme la page des paramètres). Notez qu'il semble que vous utiliseriez votre variable $id à la place de mon $post_id:

// load image from URL into media library, set a post as its parent, and return new attachment's id
$attachment_id = media_sideload_image( $image_url, $post_id, $img_title, 'id'); 
if( !is_wp_error( $attachment_id ) ) { // if no error returned...
    // ...Set above loaded image as the featured image of the current post
    set_post_thumbnail($post_id, $attachment_id);
}

Notez que le Codex dit que le troisième paramètre de media_sideload_image définit la description de l'image, mais définit le titre de l'image. En outre, ils viennent d’ajouter le quatrième paramètre permettant de renvoyer l’identifiant de la pièce jointe en 4.8, alors espérons que vous êtes à jour.

Plus d'informations:

Notez également que si vous implémentez cela en amont, vous devrez inclure les trois fichiers suivants dans votre script afin que media_sideload_image puisse gérer le téléchargement, etc. cela le fait pour nous:

require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php');
require_once(ABSPATH . 'wp-admin/includes/image.php');
2
Ben HartLenn