web-dev-qa-db-ja.com

テーマアセットの間違ったパス

私は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サブモジュールの更新に付属しているデフォルトのテーマ)のテーマは問題なく動作します。

2
zok

問題は、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' );
3
zok