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

12

J'ai utilisé un type de publication personnalisé, où la taille des miniatures, des moyennes et des grandes n'est pas requise. Je dois désactiver ces tailles et créer une fonction ou un plugin, où je peux définir, quelle taille d'image est requise pour chaque type de publication personnalisé.

Ma première étape consiste à accrocher 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 media.php fonctionne. Types par défaut après que les modifications n'ont pas été générées.

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

Mais comment faire fonctionner mon crochet?

Bohdan Hdal
la source
1
aimerait avoir une réponse à cela aussi
urok93
2
Ce n'est pas ainsi que vous utilisez ce filtre. Pour effacer les tailles par défaut, il vous suffit de l'ajouter avec une priorité très faible et de renvoyer un tableau vide. Cependant, cela ne résoudra pas votre problème, car cela affectera tous les types de messages. Je ne pense pas qu'il existe un moyen de faire ce que vous voulez dans la version WP actuelle. Essayez de demander aux développeurs WP d'ajouter l' $attachment_idargument au filtre à l'intérieur de cette fonction. De cette façon, vous pouvez vérifier le type de poste à l'intérieur de votre crochet
onetrickpony
Mon étape n'est qu'une expérience mais pas une solution complète. Comment utiliser correctement le filtre? PS Merci pour le lien ..
Bohdan Hdal
Y a-t-il des changements à WP qui le rendent possible maintenant?
Drivingralle
Aucun changement. Toujours le même problème.
Bohdan Hdal

Réponses:

7

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 );

Et puis générez-les manuellement, selon le type de publication, en vous connectant à 'wp_generate_attachment_metadata', où vous avez accès à l'ID de la pièce jointe (et donc à sa 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 );
scribu
la source
Quels sont les paramètres 10 et 2 que vous passez dans le dernier add_filter?
Luke