Woocommerce.cssをオーバーライドする最良の方法は何ですか?私のstyle.cssでは、それらをオーバーライドするためにそれらのCSSを再度記述し、各CSSの後に!重要を置く必要があります。これはそうするためのベストプラクティスではないと思います。誰かがより良いアイデアを持っていますか?
WooCommerceはデフォルトで3つのスタイルシートをエンキューします。あなたはそれらをすべて無効にすることができます:
add_filter( 'woocommerce_enqueue_styles', '__return_false' );
個々のWooCommerceスタイルシートを無効にする方法の詳細については、それらの デフォルトのスタイルシートを無効にする の記事を参照してください。
デフォルトのwordpressテーマまたは子テーマ)にあるcustom.cssファイルでwoocommerce.cssをオーバーライドできます。カスタムで何かが発生した場合は、デフォルトのwoocommerce.cssにフォールバックすることもできます。 .cssファイル。
add_action('wp_enqueue_scripts', 'override_woo_frontend_styles');
function override_woo_frontend_styles(){
$file_general = $_SERVER['DOCUMENT_ROOT'] . '/wp-content/themes/twentyfifteen/css/custom.css';
if( file_exists($file_general) ){
wp_dequeue_style('woocommerce-general');
wp_enqueue_style('woocommerce-general-custom', get_template_directory_uri() . '/css/custom.css');
}
}
同じことが他のwoocommerceフロントエンドスタイル(woocommerce-layoutおよびwoocommerce-smallscreen)にも当てはまります。
子テーマでこれを行う場合は、get_template_directory_uri()の代わりにget_stylesheet_directory_uri()を使用し、子テーマ名に従ってファイルパスを変更します。
Carrie Dillsによる 記事 には別のアプローチがあります。彼女は創世記のテーマを使用していますが、私が思う他のテーマのために作り直すことができます。
本質的に、彼女が推奨するのは、スタイルのロード順序を変更して、テーマのスタイルシートがWooCommerceスタイルシートのロード後になるようにすることです。つまり、より高い優先度でキューに入れられます。
ジェネシスの場合は以下のようになります。同様のフックを使用してフレームワーク/テーマのスタイルシートの読み込みにアクセスできる場合は、同じことを行うことができます。
/**
* Remove Genesis child theme style sheet
* @uses genesis_meta <genesis/lib/css/load-styles.php>
*/
remove_action( 'genesis_meta', 'genesis_load_stylesheet' );
/**
* Enqueue Genesis child theme style sheet at higher priority
* @uses wp_enqueue_scripts <http://codex.wordpress.org/Function_Reference/wp_enqueue_style>
*/
add_action( 'wp_enqueue_scripts', 'genesis_enqueue_main_stylesheet', 15 );
私のアプローチは、CSSの原則cascadeに従うことです。したがって、!importantが定義されていない場合、基本的に、最後にロードするものが以前のルールをオーバーライドします。
ここをチェックしてください:
//This is the order the css load by default, at leat on the sites I have worked!!!
<link rel="stylesheet" href="http:/css/custom_styles.css" type="text/css" media="all">
<link rel="stylesheet" href="http:/css/woocomerce.css" type="text/css" media="all">
では、woocommerceが読み込まれた後にカスタムCSSを読み込むというアイデアは何ですか。
方法1:スタイルの[add_action]に低優先度を追加 add_action のように:
function load_my_css(){
wp_enqueue_style('custom-theme', URL TO STYLE);
}
// (the higher the number the lowest Priority)
add_action('wp_enqueue_scripts', 'load_my_css', 5000);
方法2:woocommerceスタイルを削除して、独自のスタイルを作成します
// Or just remove them all in one line
add_filter( 'woocommerce_enqueue_styles', '__return_false' );
方法3:カスタムスタイルに依存関係配列を追加します
function load_my_css(){
wp_enqueue_style('custom-theme', URL TO STYLE, array(DEPENDECIES HERE));
}
メソッドの1つが役立つことを願っています。