我正在使用WPDM Pro,我已有1200个文件,所有图像(PSD,PDF,EPS,JPG)。有没有办法使用ImageMagick自动为Wordpress Download Manager中的所有文件指定缩略图?
答案 0 :(得分:0)
找到解决方案here我只修复了一些细节,它就像一个魅力!
<?php
// Get All Posts.
$allPosts = get_posts(array('numberposts' => -1, 'post_type' => 'wpdmpro'));
// Specify where the images are located.
$themePATH = get_theme_root().'/'.get_stylesheet().'/thumbs/';
// The uploads directory for your blog.
$uploads= wp_upload_dir();
// List of images including extensions.
$images = listImages($themePATH,true);
// List of images without extensions.
$imageNames = listImages($themePATH,false);
function reverseSlug($string){
$string = str_replace("-", " ", $string);// Convert hyphen to space
$string = ucwords($string);// Capitalize the beginning of each word
return $string;
}
// Retrieve all images from the specified directory.
// Output array with and without file extensions.
function listImages($dirname=".",$display) {
$ext = array("jpg", "png", "jpeg", "gif");
$files = array();
if($handle = opendir($dirname)){
while(false !== ($file = readdir($handle))){
for($i=0;$i<sizeof($ext);$i++){
if(strstr($file, ".".$ext[$i])){
$files[] = $file;
}
}
}
closedir($handle);
}
sort($files);
foreach($files as $theFile){
$info = pathinfo($theFile);
$fileName = basename($theFile,'.'.$info['extension']);
$files1[] = $fileName;
}
if($display == false){
return ($files1);
}
if($display == true){
return($files);
}
}
for($i = 0; $i < count($allPosts); $i++){
// Check if post slugs match image slugs.
if (is_array($imageNames)) {
$check[$i] = in_array($allPosts[$i]->post_name, $imageNames);
} else {
echo 'error';
};
if($check[$i] == 1){
echo 'Yes, post title matches image name.<br />'.PHP_EOL;
// Search through the image slugs for a direct match with the post slug.
$search[$i] = array_search($allPosts[$i]->post_name, $imageNames);
$filename = $images[$search[$i]];
$newfile = $uploads['path'].'/'.$filename;
// Copy the image from theme folder to uploads directory.
copy($themePATH.$filename, $newfile);
// Delete image from theme folder.
unlink($themePATH.$filename);
// Retrieve the file type from the file name.
$wp_filetype = wp_check_filetype(basename($filename), null);
// Construct the attachment array.
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'guid' => $uploads['url'].'/'.$filename,
'post_title' => preg_replace('/\.[^.]+$/', '', reverseSlug(basename($filename))),
'post_content' => '',
'post_status' => 'inherit'
);
// This function inserts an attachment into the media library.
$attach_id = wp_insert_attachment($attachment, $newfile, $allPosts[$i]->ID);
// You must first include the image.php file
// For the function wp_generate_attachment_metadata() to work.
require_once(ABSPATH . 'wp-admin/includes/image.php');
// This function generates metadata for an image attachment.
// It also creates a thumbnail and other intermediate sizes
// of the image attachment based on the sizes defined on
// the Settings_Media_Screen.
$attach_data = wp_generate_attachment_metadata($attach_id, $newfile);
if(!is_wp_error($attach_id)){
// Update metadata for an attachment.
wp_update_attachment_metadata($attach_id, $attach_data);
// Updates the value of an existing meta key (custom field) for the specified post.
update_post_meta($allPosts[$i]->ID, '_thumbnail_id', $attach_id);
}
}
else{
echo 'No matches found.<br />'.PHP_EOL;
}
}
?>