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!
}