web-dev-qa-db-fra.com

Comment utiliser des images en direct sur une installation locale?

Comment utiliser des images en direct sur une installation WP locale? Je veux faire quelque chose comme le code ci-dessous dans le wp-config.php. Le problème est que la siteurl doit être un chemin relatif et ne peut pas être une URL. Je souhaite configurer un environnement local pour tester certaines pièces hors ligne et afficher les images.

if ($_SERVER['SERVER_ADMIN'] == 'dev') {
  define('WP_HOME','http://localhost/siteurl.com/public_html/');
  define('WP_SITEURL','http://localhost/siteurl.com/public_html/');
  // use live images
  define( 'UPLOADS', 'http://siteurl.com/wp-content/uploads/' );
}
4
Maarten Heideman

Essayez de filtrer temporairement les URL de sortie pour les remplacer par des images en ligne, en utilisant le code suivant:

add_filter( 'wp_get_attachment_image_src', function ( $image, $attachment_id, $size ) {

    // For thumbnails
    if ( $size ) {
        switch ( $size ) {
            case 'thumbnail':
            case 'medium':
            case 'medium-large':
            case 'large':
                $image[0] = str_replace( 'localhost/', 'EXAMPLE.COM/', $image[0] );
                break;
            default:
                break;
        }
    } else {
        $image[0] = str_replace( 'localhost/', 'EXAMPLE.COM/', $image[0] );
    }
    return $image;
}, 10, 3 );

Ceci remplacera toute chaîne contenant localhost par le nom de votre domaine en ligne. Cependant, vous ne pouvez rien modifier ou faire avec les images, c'est juste pour corriger l'URL à des fins de développement.

Notez que vous devez utiliser le nom de domaine sans http:// ni aucun / avant le nom du domaine.

Supprimez cette fonction du functions.php de votre thème une fois que vous avez terminé.

0
Jack Johansson

La meilleure façon de le faire est d'utiliser les réécritures d'URL.

De cette façon, vous ne devrez effectuer aucune modification avant de télécharger CODE sur votre serveur. Essayez le code suivant dans votre fichier .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# custom rules for loading server images or any other uploaded media files
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_Host} ^localhost$
RewriteRule ^.*/uploads/(.*)$ http://siteurl.com/wp-content/uploads/$1 [L,R=301,NC]

# default WordPress rules
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Ajustez votre domaine actif sur siteurl.com en conséquence dans le code ci-dessus et les images de votre serveur seront chargées lorsque vous développerez à partir de localhost.

De plus, avec cette ligne: RewriteCond %{REQUEST_FILENAME} !-f, le serveur Web vérifie d’abord si l’image est disponible dans votre localhost (portant exactement le même nom) et ne se charge à partir du serveur que si elle n’est pas disponible localement. Si vous souhaitez charger une image de serveur même si cette même image existe localement, supprimez simplement cette ligne.

8
Scott