私はMAMPを使って、Mark Jaquithの WordPress-Skeleton repositoryから始めて、WordPressプロジェクトに取り組んでいます。
レポジトリのクローンを作成し、WordPressサブモジュールを更新し、データベースを作成し、そしてlocal-config.php
ファイルを更新しました。
これですべて問題ないようですが、別のテーマを使用しようとすると(/content/themes
に配置すると)、すべてのテーマのアセットが間違ったパスを取得します(そのため、サイトには画像もCSSもJSも含まれません)。例えば:
ソースコードでは、スタイルシートのリンクは以下を指しています。
http://localhost/content/themes/roots/assets/css/main.min.css
それがいつあるべきか:
http://localhost/lab/Wordpress-Skeleton/content/themes/roots/assets/css/main.min.css
私は私のテーマ(私が/content/themes
に入れるすべてのテーマ)のすべてのアセットに対して間違ったパスを取得しています。
たとえば、ソースコードでは、スタイルシートへのリンクは以下を指しています。
http://localhost/content/themes/roots/assets/css/main.min.css
それがいつあるべきか:
http://localhost/lab/Wordpress-Skeleton/content/themes/roots/assets/css/main.min.css
デバッグ中に、グローバル$ wp_theme_directoriesが2つのパスを持つ配列を返すことがわかりました。どちらも正しいものです。
.../htdocs/lab/WordPress-Skeleton/wp/wp-content/themes .../htdocs/lab/WordPress-Skeleton/content/themes
しかし、関数get_theme_root_uri()
は、functions.php
配列から2番目のパスにあるテーマの$wp_theme_directories
から呼び出されると、以下を返します。
http://localhost/content/themes
フォルダ/wp/wp-content/themes
(WPサブモジュールの更新に付属しているデフォルトのテーマ)のテーマは問題なく動作します。
問題は、wp-config.php内で定義されたWP_CONTENT_URL
にあることがわかりました。
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_Host'] . '/lab/WordPress-Skeleton/content' );
$_SERVER['HTTP_Host']
が不完全なパスを返しているようです(フォルダーなしのlocalhost
のみ)。
私はバージョン管理とlocal-config.phpを使っていくつかのローカルのdev変数を定義しているので(データベースの資格情報のように)、私はこれを次のようにしました。
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_Host'] . '/lab/WordPress-Skeleton/content' );
そしてwp-config.phpに私はこのチェックを追加しました:
if ( !defined( 'WP_CONTENT_URL' ) )
define( 'WP_CONTENT_URL', 'http://' . $_SERVER['HTTP_Host'] . '/content' );