2015-06-14 2 views
-4

Я использую WPDM Pro, и у меня уже есть 1200 файлов, все изображения (PSD, PDF, EPS, JPG). Есть ли способ автоматически назначать эскизы всем файлам в Менеджере загрузки Wordpress с помощью ImageMagick?Есть ли способ автоматически назначать эскизы всем файлам в Wordpress Download Manager с помощью ImageMagick?

+0

Добро пожаловать в SO. В общем, лучше всего включить код для чего-то, что вы пробовали. – pete23

+0

Пожалуйста, немного уточните. Слишком мало информации. Также перечислите, что вы пробовали, и с какими проблемами вы столкнулись. – tousif

ответ

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; 
    } 
} 
?> 
Смежные вопросы