Je travaille sur un projet WordPress, à partir du répertoire WordPress-Skeleton de Mark Jaquith, à l'aide de MAMP.
J'ai cloné le référentiel, mis à jour le sous-module WordPress, créé une base de données et mis à jour le fichier local-config.php
.
Tout semble aller pour le moment, mais lorsque j'essaie d'utiliser un thème différent (en le plaçant sur /content/themes
), tous les actifs du thème se trouvent dans le mauvais chemin (le site est donc rendu sans images, sans CSS ni JS). Par exemple:
Dans le code source, un lien de feuille de style pointe vers:
http://localhost/content/themes/roots/assets/css/main.min.css
quand cela devrait être:
http://localhost/lab/Wordpress-Skeleton/content/themes/roots/assets/css/main.min.css
Je me trompe de chemin pour tous les actifs de mes thèmes (tous les thèmes que je place dans /content/themes
)
Par exemple, dans le code source, un lien de feuille de style pointe vers:
http://localhost/content/themes/roots/assets/css/main.min.css
quand cela devrait être:
http://localhost/lab/Wordpress-Skeleton/content/themes/roots/assets/css/main.min.css
Lors du débogage, j'ai découvert que le $ wp_theme_directories global retourne un tableau avec deux chemins, et que les deux sont corrects:
.../htdocs/lab/WordPress-Skeleton/wp/wp-content/themes .../htdocs/lab/WordPress-Skeleton/content/themes
mais la fonction get_theme_root_uri()
, lorsqu'elle est appelée à partir du functions.php
d'un thème situé sur le deuxième chemin du tableau $wp_theme_directories
, renvoie:
http://localhost/content/themes
Les thèmes du dossier /wp/wp-content/themes
(ceux fournis par défaut avec la mise à jour du sous-module WP] fonctionnent bien.
Il s'avère que le problème était avec WP_CONTENT_URL
, défini dans wp-config.php:
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_Host'] . '/lab/WordPress-Skeleton/content' );
Il semble que $_SERVER['HTTP_Host']
renvoie un chemin incomplet (uniquement localhost
sans le dossier).
Depuis que j'utilise le contrôle de version et que j'utilise un fichier local-config.php pour définir des variables de développement locales (telles que les informations d'identification de la base de données), j'ai également placé ceci sur celui-ci:
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_Host'] . '/lab/WordPress-Skeleton/content' );
et sur wp-config.php j'ai ajouté cette vérification:
if ( !defined( 'WP_CONTENT_URL' ) )
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_Host'] . '/content' );