私のサイトでは、基本構造(bootstrap.min.css
)にはBootstrapを使用し、それ以上の機能強化や変更には私自身のスタイルシート(style.css
)を使用しています。私は以下のように私のスタイルシートで@font-face
を宣言しました:
@font-face {
font-family: 'roboto_condensedregular';
src: url('fonts/RobotoCondensed-Regular-webfont.eot');
src: url('fonts/RobotoCondensed-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('fonts/RobotoCondensed-Regular-webfont.woff') format('woff'),
url('fonts/RobotoCondensed-Regular-webfont.ttf') format('truetype'),
url('fonts/RobotoCondensed-Regular-webfont.svg#roboto_condensedregular') format('svg');
font-weight: normal;
font-style: normal;
}
うまくいっていますが、私の子供のテーマではRobotoフォントがまったくロードされていません。私は以下のように私のスタイルをfunctions.php
にエンキューしました:
function project_child_theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css' );
}
add_action( 'wp_enqueue_scripts', 'project_child_theme_enqueue_styles' );
私は私の子供のテーマで@font-face
を親テーマのフォントパスで再宣言することさえ試みました:
@font-face {
font-family: 'roboto_condensedregular';
src: url('../parenttheme/fonts/RobotoCondensed-Regular-webfont.eot');
src: url('../parenttheme/fonts/RobotoCondensed-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../parenttheme/fonts/RobotoCondensed-Regular-webfont.woff') format('woff'),
url('../parenttheme/fonts/RobotoCondensed-Regular-webfont.ttf') format('truetype'),
url('../parenttheme/fonts/RobotoCondensed-Regular-webfont.svg#roboto_condensedregular') format('svg');
font-weight: normal;
font-style: normal;
}
どちらの方法でもブラウザのコンソールを確認し、フォントファイルに404がないことを確認しました。
どうしましたか?
問題は@ font-faceにはありません。スタイルシートをエンキューしたfunctions.php
にあります。
あなたの親テーマが以下のようなスタイルシートをキューに入れることだと思います。
<link rel='stylesheet' id='bootstrap-css' href='http://example.com/wp-content/themes/parenttheme/bootstrap.min.css' type='text/css' media='all' />
<link rel='stylesheet' id='style-css' href='http://example.com/wp-content/themes/parenttheme/style.css' type='text/css' media='all' />
しかしあなたの子供のテーマで何が起こっているのですか:
<link rel='stylesheet' id='parent-style-css' href='http://example.com/wp-content/themes/parenttheme/style.css' type='text/css' media='all' />
<link rel='stylesheet' id='child-style-css' href='http://example.com/wp-content/themes/childtheme/style.css' type='text/css' media='all' />
<link rel='stylesheet' id='bootstrap-css' href='http://example.com/wp-content/themes/parenttheme/bootstrap.min.css' type='text/css' media='all' />
子テーマのコードが優先されるようになったためです。
そのため、以下のようなものが必要になります - 正しいスタイルシート - 依存 - 順序( 、ここで$deps
):
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css', array('bootstrap') );
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'parent-style' ) );
親スタイルのarray('bootstrap')
宣言はブートストラップの後に親スタイルをロードし、子スタイルのarray( 'parent-style' )
宣言は親スタイルの後に子スタイルをロードします。
<link rel='stylesheet' id='bootstrap-css' href='http://example.com/wp-content/themes/parenttheme/bootstrap.min.css' type='text/css' media='all' />
<link rel='stylesheet' id='parent-style-css' href='http://example.com/wp-content/themes/parenttheme/style.css' type='text/css' media='all' />
<link rel='stylesheet' id='child-style-css' href='http://example.com/wp-content/themes/childtheme/style.css' type='text/css' media='all' />
親テーマに他のCSSファイルがある場合は、それに応じて正しい依存関係に従ってください。