私はWooCommerceテーマの子テーマ(3年以上ぶりに作成)を作成していますが、一部のレイアウトスタイルが親テーマにエンキューされていることに問題があり、!important
を上書きしたいすべてのスタイル。
これは、親テーマのfunctions.phpの現在のエンキューコードです。
if ( ! is_admin() ) { add_action( 'wp_enqueue_scripts', 'woo_load_frontend_css', 20 ); }
if ( ! function_exists( 'woo_load_frontend_css' ) ) {
function woo_load_frontend_css () {
wp_register_style( 'theme-stylesheet', get_stylesheet_uri() );
wp_register_style( 'woo-layout', get_template_directory_uri() . '/css/layout.css' );
wp_enqueue_style( 'theme-stylesheet' );
wp_enqueue_style( 'woo-layout' );
} // End woo_load_frontend_css()
}
私がする必要があるのは、親テーマによってロードされたlayout.css
ファイルの後に子テーマcssをロードすることです。
私は同じ問題を抱えていて、てんかんの答えは私を正しい方向へ導いた。
私は "function" woothemeを使用しており、それはlayout.cssと呼ばれる別の親cssの前に親style.cssをロードする必要があります。そのため、子テーマのstyle.cssをロードするときにはこの順序を守る必要があります。
したがって基本的に、!important
を使用してすべてのスタイルをオーバーライドしないようにするには、次の順序でスタイルファイルを読み込む必要があります。
それを達成するために、我々は変更する必要があります:
このファイルを変更して、両方の親テーマのcssファイルを正しい順序でインポートします。
@import url("../function/style.css");
@import url("../function/css/layout.css");
それから、これをfunctions.phpに追加して、layout.css(woo-layout)の再読み込みを避け、子テーマのcss(style.css)の読み込みを避けます。
if ( ! function_exists( 'woo_load_frontend_css' ) ) {
function woo_load_frontend_css () {
// comment this, as we will be loading this css with a different priority
//wp_register_style( 'theme-stylesheet', get_stylesheet_uri() );
// we can register the style here for future manipulation...
wp_register_style( 'woo-layout', get_template_directory_uri() . '/css/layout.css' );
// comment this, as we will be loading this css with a different priority
//wp_enqueue_style( 'theme-stylesheet' );
// ... but we will not be enqueuing it, instead we will import it in the child theme's style.css
//wp_enqueue_style( 'woo-layout' );
} // End woo_load_frontend_css()
}
同じ効果を得るために、このように空の関数をロードすることもできます。
if ( ! function_exists( 'woo_load_frontend_css' ) ) {
function woo_load_frontend_css () {
} // End woo_load_frontend_css()
}
次に、前のfunction woo_load_frontend_css
の直後に、これを子テーマのfunctions.phpファイルに追加して、子テーマのcssを登録して追加します。
function cherrypick_child_enqueue_css()
{
wp_register_style( 'theme-stylesheet', get_stylesheet_uri() );
wp_enqueue_style( 'theme-stylesheet' );
}
add_action( 'wp_enqueue_scripts', 'cherrypick_child_enqueue_css', 99 ); // using priority 99 we make sure the child theme style.css will be loaded after all other css
今すぐすべてのスタイルシートファイルが正しい順序で読み込まれます。
Woo関数はif( ! function_exists('function_name') )
でラップされているため、子テーマのfunctions.php
ファイルで関数をオーバーライドできます。
関数をファイルに追加してから、キューの順序を調整してstyle.css
の後にlayout.css
をロードします。
if ( ! function_exists( 'woo_load_frontend_css' ) ) {
function woo_load_frontend_css () {
wp_register_style( 'theme-stylesheet', get_stylesheet_uri() );
wp_register_style( 'woo-layout', get_template_directory_uri() . '/css/layout.css' );
wp_enqueue_style( 'woo-layout' );
//load stylesheet after layout.
wp_enqueue_style( 'theme-stylesheet' );
} // End woo_load_frontend_css()
}