Download image from URL + upload to WordPress | media_sideload_image
Δημοσιεύθηκε 31/01/2023
Το WordPress μας δίνει την δυνατότητα να κατεβάσουμε εικόνα από εξωτερικό URL και να το ανεβάσουμε ως attachment, με μία μόνο συνάρτηση.
Μέσω της media_sideload_image, η διαδικασία είναι πανεύκολη.
Η εντολή
media_sideload_image( string $file, int $post_id, string $desc = null, string $return_type = ‘html’ )
$file -> το URL της εικόνας
$post_id -> το id του post με το οποίο θα συσχετίσουμε την εικόνα
$desc -> το description της εικόνας
$return_type -> μπορεί να είναι html, src ή id
Και εφόσον θα χρησιμοποιήσουμε την συνάρτηση εκτός του /wp-admin/, θα πρέπει να δηλώσουμε και τα εξής:
require_once(ABSPATH . ‘wp-admin/includes/media.php’);
require_once(ABSPATH . ‘wp-admin/includes/file.php’);
require_once(ABSPATH . ‘wp-admin/includes/image.php’);
Παράδειγμα
Στο ακόλουθο παράδειγμα κατεβάζουμε μία εικόνα μέσω του εξωτερικού URL και το ανεβάζουμε σε συγκεκριμένο άρθρο ως featured image.
<?php
require_once(ABSPATH . 'wp-admin/includes/media.php');
require_once(ABSPATH . 'wp-admin/includes/file.php')
require_once(ABSPATH . 'wp-admin/includes/image.php');
$file_url = 'https://.../img.jpg';
$post_id = 1;
$attachment_id = media_sideload_image( $file_url, $post_id, '', 'id' );
if ( !is_wp_error( $attachment_id ) ) {
set_post_thumbnail( $post_id, $attachment_id );
}
?>
PRO TIP
Μπορούμε να γράψουμε τον κώδικά μας μέσα στο παρακάτω if statement.
if( is_admin() && $_GET['nb_download'] == 1)
Έτσι μπορούμε να τρέξουμε τον κώδικα αν χρησιμοποιήσουμε το ακόλουθο link:
/wp-admin/?nb_download=1