Existe-t-il un moyen d'empêcher WordPress de rogner des fichiers en fonction de leur extension? En fait, je veux désactiver le recadrage des fichiers GIF car après le recadrage de l'image GIF ...
Il existe donc un moyen de désactiver la génération de miniatures (pour GIF) en fonction de l’extension de fichier d’une image.
Les tailles de défilement peuvent normalement être facilement effectuées via le crochet intermediate_image_sizes_advanced
. Le seul problème est qu'il n'y a que le tableau $sizes
disponible, donc suffisant pour un niveau général, mais pas si vous souhaitez le faire de manière conditionnelle. Les informations nécessaires pour le faire de manière conditionnelle peuvent être rassemblées avec debug_backtrace
- debug_backtrace
est cependant un peu cher en termes de performances. Quoi qu'il en soit, j'imagine que cela pourrait être fait comme indiqué ci-dessous:
add_action(
'intermediate_image_sizes_advanced',
'wpse162413_unset_sizes_if_gif'
);
function wpse162413_unset_sizes_if_gif( $sizes ) {
// we're only having the sizes available
// we're using debug_backtrace to get additional information
$dbg_back = debug_backtrace();
// scan $dbg_back array for function and get $args
foreach ( $dbg_back as $sub ) {
if ( $sub[ 'function'] == 'wp_generate_attachment_metadata' ) {
$args = $sub[ 'args' ];
}
}
// attachment id
$att_id = $args[0];
// attachment path
$att_path = $args[1];
// split up file information
$pathinfo = pathinfo( $att_path );
// if extension is gif unset sizes
if ( $pathinfo[ 'extension' ] == 'gif' ) {
// get all intermediate sizes
$intermediate_image_sizes = get_intermediate_image_sizes();
// loop trough the intermediate sizes array
foreach ( $intermediate_image_sizes as $size ) {
// unset the size in the sizes array
unset( $sizes[ $size ] );
}
}
// return sizes
return $sizes;
}