Proxying Media Files in a Local WordPress Development Environment with DDEV
Il proxying dei file multimediali in un ambiente di sviluppo WordPress locale è un'abilità essenziale per gli sviluppatori che desiderano garantire che il loro sito locale rifletta il contenuto e la funzionalità del sito di produzione live. Scaricare tutti i file multimediali nel tuo ambiente locale potrebbe non essere la soluzione migliore, specialmente se il sito di produzione ha una vasta libreria multimediale. Invece, puoi configurare il tuo ambiente di sviluppo locale per inoltrare le richieste multimediali al server di produzione. Per lo sviluppo locale, sto utilizzando DDEV, uno strumento open-source che rende incredibilmente semplice mettere in funzione ambienti di sviluppo PHP locali in pochi minuti. In questo post del blog, condividerò una soluzione che ho trovato utile per il proxying dei file multimediali in un ambiente DDEV locale senza utilizzare un plugin.
Il Problema
Lavorando con WordPress localmente utilizzando DDEV, avevo bisogno di un modo per visualizzare i file multimediali senza scaricarli effettivamente nel mio ambiente locale. Il mio obiettivo era far sì che WordPress caricasse questi file dal server di produzione ogni volta che venivano richiesti.
La Soluzione
Possiamo raggiungere questo obiettivo aggiungendo funzioni personalizzate al file functions.php
del tuo tema WordPress. Queste funzioni cambieranno gli URL degli allegati e delle miniature per puntare al server di produzione.
Ecco lo snippet di codice che puoi aggiungere al tuo file 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);
}
Sostituisci your-local-ddev-url
con l'URL del tuo ambiente DDEV locale e your-production-url
con l'URL del tuo server di produzione.
Come Funziona
- La funzione
replace_domain
prende un URL come input e sostituisce il dominio locale con il dominio di produzione. - La funzione
rewrite_attachment_url
utilizza il filtrowp_get_attachment_url
per modificare gli URL dei file allegati. - La funzione
rewrite_thumbnail_attributes
modifica l'attributosrcset
per le immagini in miniatura. Questo è utile quando il tuo tema utilizza immagini responsive di diverse dimensioni.
DDEV: Un Ottimo Strumento per lo Sviluppo Locale
DDEV è uno strumento open-source che ti aiuta a configurare rapidamente ambienti di sviluppo PHP locali con Docker. È incredibilmente facile da usare e può accelerare notevolmente il tuo flusso di lavoro di sviluppo. Utilizzando DDEV per il tuo sviluppo WordPress locale, puoi garantire che il tuo ambiente sia coerente con il tuo server di produzione, il che è fondamentale per evitare il problema "funziona sulla mia macchina".
Se sei nuovo a DDEV e vuoi sapere come configurarlo per WordPress e Drupal, ho una guida che ti accompagnerà nel processo di configurazione di un sito locale con DDEV. Dai un'occhiata al mio post precedente: Come configurare un sito locale WordPress e Drupal con DDEV.
Conclusione
Effettuando il proxying dei file multimediali da un server di produzione, puoi risparmiare spazio e tempo nel tuo ambiente di sviluppo locale. Questa soluzione è particolarmente utile quando si utilizza DDEV per siti WordPress di grandi dimensioni con librerie multimediali estese. Sii sempre consapevole del carico che ciò potrebbe aggiungere al server di produzione e assicurati che il tuo ambiente di produzione possa gestire il traffico aggiuntivo. Buona codifica!