web-dev-qa-db-fra.com

Comment désactiver la génération de tailles d'image par défaut pour certains types de publication personnalisés?

J'ai utilisé le type de message personnalisé, où "miniature", "moyenne" et "grande" taille n'est pas nécessaire. Je dois désactiver cette taille et créer une fonction ou un plug-in, où je peux définir, quelle taille d'image est requise pour chaque type de message personnalisé.

Ma première étape est la connexion de la fonction get_intermediate_image_sizes à partir de wp-includes/media.php. J'ai ajouté ce code à functions.php mais cela ne fonctionne pas :(

add_filter('get_intermediate_image_sizes', 'get_intermediate_image_sizes_fixed');
function get_intermediate_image_sizes_fixed() {
    global $_wp_additional_image_sizes;
    //$image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
    $image_sizes = array();
    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
        $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
return apply_filters( 'intermediate_image_sizes', $image_sizes );
}   

UPD: La modification de cette ligne dans le fichier media.php fonctionne. Types par défaut après modifications non générées.

$image_sizes = array('thumbnail', 'medium', 'large');

Mais comment faire fonctionner mon crochet?

12
Bohdan Hdal

Je pense que la seule solution que vous avez pour le moment est de désactiver toutes les tailles d'image intermédiaires:

add_filter( 'intermediate_image_sizes', '__return_empty_array', 99 );

Ensuite, générez-les manuellement, en fonction du type de publication, en vous connectant à 'wp_generate_attachment_metadata', où vous avez accès à l'ID de pièce jointe (et donc à la publication parent):

function do_your_stuff( $data, $attachment_id ) {
  // generate intermediate images

  return $data;
}

add_filter( 'wp_generate_attachment_metadata', 'do_your_stuff', 10, 2 );
7
scribu