Retour au blog

Proxy des fichiers multimédias dans un environnement de développement WordPress local avec DDEV

2023-07-043 min de lecture

Le proxy des fichiers multimédias dans un environnement de développement WordPress local est une compétence essentielle pour les développeurs qui souhaitent s'assurer que leur site local reflète le contenu et la fonctionnalité du site de production en direct.

Le téléchargement de tous les fichiers multimédias vers votre environnement local n'est peut-être pas la meilleure solution, surtout si le site de production dispose d'une grande bibliothèque de médias. Au lieu de cela, vous pouvez configurer votre environnement de développement local pour proxy les requêtes multimédias vers le serveur de production. Pour le développement local, j'utilise DDEV, un outil open-source qui rend extrêmement simple la mise en place d'environnements de développement PHP locaux en quelques minutes. Dans cet article de blog, je vais partager une solution que j'ai trouvée utile pour le proxy des fichiers multimédias dans un environnement DDEV local sans utiliser de plugin.

Le Problème

En travaillant avec WordPress localement à l'aide de DDEV, j'avais besoin d'un moyen d'afficher des fichiers multimédias sans les télécharger réellement dans mon environnement local. Mon objectif était de faire en sorte que WordPress charge ces fichiers à partir du serveur de production chaque fois qu'ils sont demandés.

La Solution

Nous pouvons y parvenir en ajoutant des fonctions personnalisées au fichier functions.php de votre thème WordPress. Ces fonctions modifieront les URL des pièces jointes et des miniatures pour qu'elles pointent vers le serveur de production.

Voici l'extrait de code que vous pouvez ajouter à votre fichier functions.php :

if ($_SERVER['HTTP_HOST'] == 'your-local-ddev-url') {

    function replace_domain($url) {
        return str_replace('https://your-local-ddev-url', 'https://your-production-url', $url);
    }

    function rewrite_attachment_url($url) {
        return replace_domain($url);
    }
    add_filter('wp_get_attachment_url', 'rewrite_attachment_url');

    function rewrite_thumbnail_attributes($attr, $attachment, $size) {
        if (isset($attr['srcset'])) {
            $attr['srcset'] = replace_domain($attr['srcset']);
        }
        return $attr;
    }
    add_filter('wp_get_attachment_image_attributes', 'rewrite_thumbnail_attributes', 10, 3);

}

Remplacez your-local-ddev-url par l'URL de votre environnement DDEV local et your-production-url par l'URL de votre serveur de production.

Comment ça marche

  • La fonction replace_domain prend une URL en entrée et remplace le domaine local par le domaine de production.
  • La fonction rewrite_attachment_url utilise le filtre wp_get_attachment_url pour modifier les URL des fichiers joints.
  • La fonction rewrite_thumbnail_attributes modifie l'attribut srcset pour les images miniatures. Ceci est utile lorsque votre thème utilise des images réactives de différentes tailles.

DDEV : Un excellent outil pour le développement local

DDEV est un outil open-source qui vous aide à configurer rapidement des environnements de développement PHP locaux avec Docker. Il est incroyablement facile à utiliser et peut considérablement accélérer votre flux de travail de développement. En utilisant DDEV pour votre développement WordPress local, vous pouvez vous assurer que votre environnement est cohérent avec votre serveur de production, ce qui est crucial pour éviter le problème « ça marche sur ma machine ».

Si vous débutez avec DDEV et que vous souhaitez savoir comment le configurer pour WordPress et Drupal, j'ai un guide qui vous expliquera le processus de configuration d'un site local avec DDEV. Consultez mon article précédent : Comment configurer un site local WordPress et Drupal avec DDEV.

Conclusion

En proxyant les fichiers multimédias à partir d'un serveur de production, vous pouvez économiser de l'espace et du temps dans votre environnement de développement local. Cette solution est particulièrement utile lorsque vous utilisez DDEV pour de grands sites WordPress avec des bibliothèques de médias étendues. Soyez toujours conscient de la charge que cela pourrait ajouter au serveur de production et assurez-vous que votre environnement de production peut gérer le trafic supplémentaire. Bon codage !