Afbeeldingen automatisch opladen in WordPress

Via de wordpress api is het mogelijk in eigen plugins of scripts het inladen van afbeeldingen te automatiseren.

Wanneer je een eigen php-script bouwt (we gaan er van uit dat deze in een apart map /scripts werd neergezet) kan je met deze include/require zorgen dat je de functies van de wordpress api kan gebruiken:

<?php

require('../wp-load.php');

?>

Wijzig het path zodat dit overeenkomt en klopt voor jouw eigen script. De file wp-load.php bevindt zich normaliter in de hoofdmap van je website.

Voor het inladen van afbeeldingen zijn nog enkele extra requires nodig:

<?php

require_once(‘../wp-admin/includes/file.php’);
require_once(‘../wp-admin/includes/image.php’);
require_once(‘../wp-admin/includes/media.php’);
?>

Zorg voor volgende functie. Deze functie gaan we later via hooks laten aanroepen om set_post_thumbnail te kunnen uitvoeren. De sideload functie (zie verder) geeft namelijk geen id terug.

 

<?php

function new_attachment( $att_id ){
$att = get_post( $att_id );

$post_id = $att->post_parent;

set_post_thumbnail( $post_id, $att_id );
}

?>

Met deze code kan je een file vanuit je eigen path opladen naar de WordPress bibliotheek en koppelen aan een post.

<?php

 

$mijnPostId = 123;  //haal hier de id op van je post waaraan je de afbeelding wil koppelen.

$strImageFile=”pathnaarjouwfile/file.jpg”;
preg_match(‘/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i’, $strImageFile, $matches);
$filename = basename($matches[0]);

$uploads = wp_upload_dir();
$uploads_dir = $uploads[‘path’];
$uploads_url = $uploads[‘url’];

copy( $strImageFile, trailingslashit( $uploads_dir ) . $filename);
$url = trailingslashit( $uploads_url ) . $filename;

//debug info
echo “<br /> $url, $mijnPostId, $filename<br />” ;
// hooks
add_action(‘add_attachment’,’new_attachment’);
$result = media_sideload_image( $url, $mijnPostId, $filename );
remove_action(‘add_attachment’,’new_attachment’);

if ( is_wp_error($result) ) {

echo “Error: sideload error \n”;

var_dump($result);
}else{
var_dump($result);

@unlink($strImageFile); // wist de oorspronkelijke file => is mogelijk niet wenselijk!
}

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *