web-dev-qa-db-fra.com

Mauvais chemin pour les actifs de thème

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.

1
zok

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' );
2
zok