WordPress : Modification du chemin d’URL visible vers les fichiers css et js

Publié par Jean-Michel le

Est-ce que quelqu’un sait comment je peux activer automatiquement:

http://www.example.com/wp-content/themes/theme-name/css/stylesheeet.css

dans

http://www.example.com/css/stylesheet.css

Naturellement, je pourrais simplement créer le dossier applicable à la racine du site Web, y placer les fichiers et simplement les référencer, mais c’est maintenant ce que je recherche.

Je cherche un moyen de conserver tous les fichiers CSS et JavaScript dans le dossier du thème, mais j’aimerais que wordpress affiche le chemin d’URL décrit ci-dessus si vous affichez la source de la page.

Dans une situation idéale, je recherche un morceau de code qui peut être ajouté et qui le fait automatiquement pour tous les fichiers référencés dans mon dossier de thème, y compris toutes les images.

Solution n°1 trouvée

Dans une situation idéale, je recherche un morceau de code qui peut être ajouté et qui le fait automatiquement pour tous les fichiers référencés dans mon dossier de thème, y compris toutes les images.

Je vais proposer une solution alternative qui résoudra le problème.

Créez un lien symbolique depuis wp-content/themes/your-theme vers votre répertoire racine/css

Pour créer un lien symbolique sous Linux, utilisez la #ln -scommande. Par exemple:

#ln -s /home/user-name/public_html/wp-content/themes/your_theme_name /home/user-name/public_html/css

Maintenant, n’importe quel fichier dans http://example.com/wp-content/themes/your_theme_name/ est accessible en utilisant l’url :

http://exemple.com/css/

Pour que cela fonctionne, vous devez autoriser la directive FollowSymLinks dans votre fichier httpd.conf. Vous pouvez également le mettre dans un fichier .htaccess qui remplacera le paramètre dans httpd.conf

Dans httpd.conf, le paramètre serait :

<Directory />
Options Indexes FollowSymLinks
</Directory>

Avant que le changement ne prenne effet, vous devrez redémarrer Apache :

#/etc/init.d/apache2 restart

Vous pouvez en savoir plus sur SymLinks sur Maxi-Pedia et dans Apache Docs

Solution n°2 trouvée

De prime abord, je pense que vous auriez besoin de deux choses :

Tout d’abord, une règle de réécriture dans votre fichier .htaccess comme ceci :

RewriteEngine On
RewriteBase /
RewriteRule ^css/(.*) /wp-content/themes/theme-name/css/$1 [L]
RewriteRule ^js/(.*) /wp-content/themes/theme-name/js/$1 [L]

Deuxièmement, ajoutez un filtre au functions.php de votre thème comme suit :

function change_css_js_url($content) {
    $current_path = '/wp-content/themes/theme-name/';
    $new_path = '/'; // No need to add /css or /js here since you're mapping the subdirectories 1-to-1
    $content = str_replace($current_path, $new_path, $content);
    return $content;
}
add_filter('bloginfo_url', 'change_css_js_url');
add_filter('bloginfo', 'change_css_js_url');

Quelques mises en garde : – si un plugin ou quelque chose n’utilise pas bloginfo() ou get_bloginfo(), il ne déclenchera pas le filtre. Vous pouvez contourner ce problème en connectant votre fonction à d’autres filtres si nécessaire. – certains plugins/thèmes/etc utilisent des chemins codés en dur. Vous ne pouvez pas faire grand-chose à ce sujet, sauf modifier le code pour utiliser l’une des fonctions de WP pour obtenir le chemin.

Voici le même exemple utilisant le thème Twentyten (pas de sous-répertoires css/js, mais l’idée est la même.)

.htaccess

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^twentyten/(.*) /wp-content/themes/twentyten/$1 [L]
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

fonctions.php

function change_css_js_url($content) {
    $current_path = '/wp-content/themes/';
    $new_path = '/'; // No need to add /css or /js here since you're mapping the subdirectories 1-to-1
    $content = str_replace($current_path, $new_path, $content);
    return $content;
}
add_filter('bloginfo_url', 'change_css_js_url');
add_filter('bloginfo', 'change_css_js_url');

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *