diff --git a/wp-thumbor.php b/wp-thumbor.php index 2bf4297..19867bf 100644 --- a/wp-thumbor.php +++ b/wp-thumbor.php @@ -1,8 +1,8 @@ (contenu, header, backgrounds, etc.) et dans les liens preload d'image dans le . L'URL de Thumbor, les filtres et la clé secrète sont configurables. Les images sont redimensionnées si une taille est spécifiée dans le nom du fichier ou dans les attributs HTML. La transformation est désactivée dans certains cas (ex. Optimize More) pour éviter des erreurs getimagesize(). Le favicon, les scripts et les images en dehors du (sauf preload) ne sont pas modifiés. -Version: 1.6 +Description: Intègre Thumbor dans WordPress en transformant les URLs des images présentes dans le (contenu, header, backgrounds, etc.) et dans les liens preload d'image dans le . L'URL de Thumbor, les filtres, la clé secrète et un éventuel chemin local sont configurables. Les images sont redimensionnées si une taille est spécifiée dans le nom du fichier ou dans les attributs HTML. La transformation est désactivée dans certains cas (ex. Optimize More) pour éviter des erreurs getimagesize(). Le favicon, les scripts et les images en dehors du (sauf preload) ne sont pas modifiés. +Version: 1.7 Author: MrRaph_ */ @@ -18,6 +18,7 @@ function wp_thumbor_get_options() { 'thumbor_base_url' => '', 'thumbor_filters' => '', 'thumbor_secret_key' => '', + 'thumbor_local_path' => '', // nouveau paramètre pour le chemin local ); $options = get_option('wp_thumbor_options', $defaults); return wp_parse_args($options, $defaults); @@ -66,6 +67,7 @@ function wp_thumbor_settings_page() { $options['thumbor_base_url'] = isset($_POST['thumbor_base_url']) ? esc_url_raw(trim($_POST['thumbor_base_url'])) : ''; $options['thumbor_filters'] = isset($_POST['thumbor_filters']) ? sanitize_text_field(trim($_POST['thumbor_filters'])) : ''; $options['thumbor_secret_key'] = isset($_POST['thumbor_secret_key']) ? sanitize_text_field(trim($_POST['thumbor_secret_key'])) : ''; + $options['thumbor_local_path'] = isset($_POST['thumbor_local_path']) ? sanitize_text_field(trim($_POST['thumbor_local_path'])) : ''; update_option('wp_thumbor_options', $options); echo '

Les paramètres ont été mis à jour.

'; } @@ -88,7 +90,7 @@ function wp_thumbor_settings_page() { Filtres Thumbor -

Entrez la liste des filtres à appliquer, séparés par des virgules, sans le préfixe "filters:" ni le suffixe ":/".

+

Entrez la liste des filtres à appliquer, séparés par des virgules, sans le préfixe "filters:" ni le suffixe ":/".

@@ -98,6 +100,13 @@ function wp_thumbor_settings_page() {

Entrez la clé secrète pour signer les URLs Thumbor. Laissez vide pour utiliser l'endpoint "unsafe".

+ + Chemin local Thumbor + + +

Optionnel. Si renseigné, ce chemin sera préfixé au chemin de l'image sur le filesystem local de Thumbor. Par exemple, si vous indiquez "/home", alors au lieu de transmettre l'URL publique, le plugin transmettra "home/wp-content/uploads/…".

+ + @@ -123,10 +132,13 @@ function wp_thumbor_extract_dimensions_from_url($url) { * les options de redimensionnement et les filtres configurés. * * Le format généré est : - * {thumbor_base_url}/{endpoint}/[width]x[height]/[filters:...]/{url} + * {thumbor_base_url}/{endpoint}/[width]x[height]/[filters:...]/{image_path} * * Si aucune dimension n'est précisée, la partie redimensionnement est omise. * + * Si le paramètre "Chemin local Thumbor" est renseigné, l'image est référencée par + * ce chemin suivi du chemin (PATH) de l'URL d'origine. + * * @param string $url L'URL originale de l'image. * @param int|null $width La largeur souhaitée. * @param int|null $height La hauteur souhaitée. @@ -147,7 +159,6 @@ function wp_thumbor_transform_url($url, $width = null, $height = null) { $options = wp_thumbor_get_options(); $thumbor_base_url = isset($options['thumbor_base_url']) ? rtrim($options['thumbor_base_url'], '/') : ''; - if ( empty($thumbor_base_url) ) { return $url; } @@ -178,14 +189,25 @@ function wp_thumbor_transform_url($url, $width = null, $height = null) { // Préparation de la partie filtres à partir des réglages $thumbor_filters = isset($options['thumbor_filters']) ? trim($options['thumbor_filters']) : ''; if ( ! empty($thumbor_filters) ) { - // Utilise "/" comme séparateur attendu par Thumbor. $filterPart = 'filters:' . $thumbor_filters . '/'; } else { $filterPart = ''; } + // Détermine le chemin de l'image pour Thumbor. + // Par défaut, on utilise l'URL complète. + $image_path = $url; + // Si un chemin local est configuré, on remplace la partie "https://votredomaine/wp-content/…" par + // le chemin local suivi du chemin de l'image (extrait avec parse_url). + if ( ! empty($options['thumbor_local_path']) ) { + // On retire les éventuels slash en début de chaîne + $local = ltrim($options['thumbor_local_path'], '/'); + $path = parse_url($url, PHP_URL_PATH); // ex: /wp-content/uploads/... + $image_path = $local . $path; // Résultera par exemple en "home/wp-content/uploads/..." + } + // Construction de la chaîne d'options à signer - $path_to_sign = $resize . $filterPart . $url; + $path_to_sign = $resize . $filterPart . $image_path; // Détermine l'endpoint : si une clé secrète est renseignée, on signe, sinon on utilise "unsafe" if ( ! empty($options['thumbor_secret_key']) ) {