Pourquoi est-ce utile de redimensionner les images mises en avant ?

Lorsque vous chargez une image mise en avant dans un article ou une page, WordPress la redimensionne automatiquement selon les critères standards de tailles des images. Vous pouvez sommairement définir ces tailles pour l’ensemble du site à partir de votre administration: Réglages => Médias. Vous pouvez paramétrer la taille des petites images (150 px par défaut), moyennes (300 px par défaut) et grandes (1024 px par défaut). Cependant il peut s’avérer utile de redimensionner les images mises en avant à la taille de votre choix.

Un petit utilitaire simple et léger pour redimensionner les images mises en avant

Je vous propose un petit utilitaire simple, léger et fonctionnel, qui vous permettra de redimensionner vos images mises en avant :  définir une taille par défaut (largeur) pour vos images mises en avant dans les pages ou articles. Les tailles standard des images WordPress ne seront pas affectées. Le plugin va ajouter un nouveau lien dans votre menu “Médias” afin de vous permettre de définir votre taille par défaut pour les images mises en avant.

Le code

				
					<?php
/*
Plugin Name: Image en Avant Resizer
Description: Redimensionner automatiquement les images mises en avant selon les paramètres définis.
Version: 1.0
Author: WP-CODES
Author URI: https://wp-codes.fr
*/

if (!defined('ABSPATH')) {
    exit; // Empêche l'accès direct au fichier
}

// Ajout du lien dans les réglages Médias pour définir la largeur maximale
add_action('admin_menu', 'fir_add_admin_menu');
function fir_add_admin_menu() {
    add_media_page(
        'Redimensionnement d\'images', // Titre de la page
        'Images mises en avant', // Titre du menu
        'manage_options',  // Capacité requise
        'fir_settings',   // Slug de la page
        'fir_render_settings_page' // Fonction qui rend la page
    );
}

// Page de réglages pour définir la largeur maximale
function fir_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Paramètres de redimensionnement des images</h1>
        <?php settings_errors(); ?>
        <form method="post" action="options.php">
            <?php
            settings_fields('fir_settings_group');
            do_settings_sections('fir_settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

// Validation et sauvegarde des réglages
add_action('admin_init', 'fir_settings_init');
function fir_settings_init() {
    register_setting('fir_settings_group', 'fir_max_width', [
        'type' => 'integer',
        'sanitize_callback' => 'fir_validate_max_width',
        'default' => 1200,
    ]);

    add_settings_section(
        'fir_section',
        'Paramètres des images',
        null,
        'fir_settings'
    );

    add_settings_field(
        'fir_max_width',
        'Largeur maximale (px)',
        'fir_max_width_field_render',
        'fir_settings',
        'fir_section'
    );
}

// Validation du champ
function fir_validate_max_width($input) {
    $min_width = 300;  // Largeur minimale autorisée
    $max_width = 2400; // Largeur maximale autorisée

    if ($input < $min_width || $input > $max_width) {
        add_settings_error(
            'fir_max_width', 
            'invalid_max_width', 
            "La largeur maximale doit être comprise entre $min_width et $max_width pixels.", 
            'error'
        );
        return get_option('fir_max_width');
    }

    add_settings_error(
        'fir_max_width',
        'settings_updated',
        'La largeur maximale des images a été mise à jour.',
        'updated'
    );

    return $input;
}

// Affichage du champ de saisie pour la largeur maximale
function fir_max_width_field_render() {
    $max_width = get_option('fir_max_width', 1200);
    ?>
    <input type="number" name="fir_max_width" value="<?php echo esc_attr($max_width); ?>" />
    <p class="description">Le ratio largeur/hauteur sera conservé. Valeur entre 300px et 2400px.</p>
    <?php
}

// Redimensionner et remplacer l'image mise en avant lors du téléchargement
add_filter('wp_generate_attachment_metadata', 'fir_resize_featured_image', 10, 2);
function fir_resize_featured_image($metadata, $attachment_id) {
    $max_width = get_option('fir_max_width', 1200);

    // Obtenir le chemin de l'image originale
    $file = get_attached_file($attachment_id);
    $image = wp_get_image_editor($file);

    if (!is_wp_error($image)) {
        $size = $image->get_size();
        $width = $size['width'];
        $height = $size['height'];

        // Si l'image dépasse la largeur maximale, on la redimensionne
        if ($width > $max_width) {
            $aspect_ratio = $width / $height;
            $new_width = $max_width;
            $new_height = intval($max_width / $aspect_ratio);

            // Redimensionner et remplacer l'image originale
            $image->resize($new_width, $new_height);
            $image->save($file);  // Remplacer l'image originale
        }
    }

    return $metadata;
}
?>

				
			

Conclusion : vous savez redimensionner les images mises en avant

Redimensionner les images mises en avant

Téléchargez le plugin

Cliquez sur le bouton ci-dessous pour télécharger le plugin “Redimensionner les images mises en avant” et installez-le via l’installateur d’extensions de WordPress puis activez le. Vous devriez voir un nouveau lien apparaître dans le menu Médias : Images mises en avant. Ici vous pourrez définir une taille de largeur globale de toutes vos images mises en avant (pages ou articles). Définissez cette largeur, par exemple 1800 pixels, et le plugin va automatiquement redimensionner les images mises en avant en conservant le ration largeur/hauteur.

Laisser un commentaire