here および here に記載されている情報を使用して、Emmet Lite template
の子テーマを正常に作成しました。
子テーマのCSSファイルは次のようになります。
/*
Theme name: Emmet Child
Theme URI: http://www.example.com/
Description: This is a child of Emmet Lite theme
Author: Motopress
Author URI: http://www.getmotopress.com/
Template: emmet-lite
Version: 1.0
*/
/* Adjustments to the Emmet Lite template start here */
.top-header {
display: none;
}
.site-header {
background-color: #FFC421;
}
私は最初に@import
関数を追加しました、しかしそれは私のために働きませんでした。私が読んだのは、親のCSSが子の後にロードされたので、最後のものが勝ったということです。これに対処するために、私は子フォルダにfunctions.php
を追加し、@import
を削除しました。これはこんな感じです:
<?php
function my_theme_enqueue_styles() {
$parent_style = 'parent-style';
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style )
);
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
?>
ですから、すべてが正しく機能しているので、子フォルダのstyle.css
内で行った変更/上書きは、私のWebサイトにも正しく適用されます。
状況を理解する:
私の質問は:
親のEmmet
テーマは、style.css
とは異なる方法で呼び出されたCSSファイルを使用します。このテンプレートで使用されている名前は...
(テーマフォルダのパス:emmet-lite/css/emmet-style.cssにあります)
それはWoocommerce、Buddypress、Bootstrapのための他のスタイルのセットも含みますが、私が編集に使用する唯一のファイルはemmet-style.min.cssです。
たとえすでにうまくいっていても、ここで何をしているのか理解したいのですが。私はPHPに慣れていないので、私の理解からこのコード行は間違ったCSSを呼び出しますが、それでも動作しますか?
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
Style.cssはemmet-style.min.css
であるべきですか、それが常にstyle.css
であるかは関係ありません。 functions.php
パスを正しいCSSパスに変更することに言及しているstyle.css
を開発するとき、私はドキュメンテーションに何も言及されていません。だから私はおそらくPHPをここで誤解しているでしょう。
誰かが私がfunctions.php
の中で子供のテーマと与えられた経路のために何が起こっているかについてより詳細に説明するのを手伝うことができますか?
私が読んだのは、親のCSSが子の後にロードされたので、最後のものが勝つということです
テーマ開発者がスタイルシートをロードする順番に依存します。
通常、WordPressは最初に子テーマのfunctions.php
をロードし、次に親テーマのfunctions.php
をロードします。
親Emmetテーマは、Style.cssとは異なる方法で呼び出されたCSSファイルを使用します。
はい、そうです。テーマのルートフォルダ内のstyle.css
は、WordPressがそのヘッダからテーマを正しく識別するためののみ必要です。
テーマヘッダ以外のCSSプロパティがない場合はstyle.css
キューに入れる必要はありません _。
スタイルシートに他の名前を使用してそれらを異なる方法でロードすることができますが、WordPressによってテーマとして識別されるためにはテーマヘッダを持つstyle.css
がルートフォルダにある必要があります。
通常、一部のテーマ開発者はすべてのスタイルシートをcssフォルダーにまとめることを好みますが、これはEmmet Liteテーマ開発者によっても使用されるケースです。
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
cSSのルールがないため、上記の親style.css
をエンキューする必要はありません。単なるオーバーヘッドです。
では、現在どのように機能していますか?
親テーマの functions.php
を見ると、次の順序でスタイルシートがロードされていることがわかります。
/css/emmet-style.min.css
)style.css
を意味します)そのため、ここでは親テーマが必要な/css/emmet-style.min.css
ファイルを最初にロードしてからstyle.css
をロードしています。これはアクティブテーマのstyle.cssです。あなたの場合は子テーマのstyle.css
です。すでに親テーマによって行われています。
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style )
);
パス
get_stylesheet_directory_uri
は現在アクティブなテーマフォルダのURIを指定します。get_template_directory_uri
に親テーマフォルダがない場合は現在のテーマフォルダを指定します。