web-dev-qa-db-fra.com

Tailles d'image personnalisées uniquement pour les vignettes

Je résous un problème, j’utilise dans un modèle plusieurs tailles d’images différentes (add_image_size), mais je ne les utilise que pour les vignettes, il est absolument inutile de créer ces tailles pour chaque image téléchargée sur WP, j’ai des dizaines de milliers d’images sur des supports. . Vous ne savez pas comment résoudre cette idée? Merci pour toute aide.

2
Michal Pelech

https://github.com/crstauf/WordPress-FeaturedImage-SpecialImageSize

essayez ceci écrit moi-même il y a longtemps. J'ai une version mise à jour, à paraître bientôt. laissez-moi savoir si vous avez des questions.

comme demandé, code pertinent pour functions.php de votre thème:

// `post_type` => array(width,height,crop)
$featimg_sizes = array(
    'post' => array(50,20,false)
);

add_action('wp_ajax_set-post-thumbnail','generate_featimg_size',1);
function generate_featimg_size() {
    global $featimg_sizes;

$thumbnail_id = intval( $_POST['thumbnail_id'] );
$type = get_post_type(intval( $_POST['post_id'] ));

if (!isset($thumbnail_id)) return;
if ('-1' == $thumbnail_id) return;
if (!array_key_exists($type,$featimg_sizes)) return;

$size = $featimg_sizes[$type];
if (!isset($size[0]) || !isset($size[1]) || empty($size[0]) || empty($size[1])) return;
if (!isset($size[2])) $size[2] = false; // set $crop if left blank to false

$meta = wp_get_attachment_metadata($thumbnail_id);
$path = apply_filters('image_make_intermediate_size',get_attached_file($thumbnail_id));

if ($newsize = image_make_intermediate_size($path,$size[0],$size[1],$size[2])) {
    $backupsizes = get_post_meta($thumbnail_id,'_wp_attachment_backup_sizes',true);
    $meta['sizes']['ptfi_'.$type] = $backupsizes['ptfi_'.$type] = $newsize; // ptfi = post type featured image

    update_post_meta($thumbnail_id,'_wp_attachment_metadata',$meta);
    update_post_meta($thumbnail_id,'_wp_attachment_backup_sizes',$backupsizes);
}
}
`
1
Caleb