Лучший способ переопределить woocommerce.стиль CSS

каков наилучший способ переопределить woocommerce.css? В моем стиле.css я должен написать эти css снова, чтобы переопределить его и поставить !важно после каждого фрагмента. Я думаю, что это не лучшая практика для этого. У кого-нибудь есть идея получше?

4 ответов


WooCommerce enqueues 3 таблицы стилей по умолчанию. Вы можете отключить их все, используя:

add_filter( 'woocommerce_enqueue_styles', '__return_false' );

подробнее о том, как отключить отдельные таблицы стилей WooCommerce, см. В разделе их отключить таблицу стилей по умолчанию статьи.


есть другой подход в статьи Кэрри укропом. Она использует тему Genesis, но ее можно переработать для других тем, которые я думаю.

по сути, она рекомендует изменить порядок загрузки стилей, чтобы загрузить таблицу стилей вашей темы после таблица стилей 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 );

вы можете переопределить woocommerce.css с пользовательским.css-файл, который может быть расположен либо в теме wordpress по умолчанию, либо в дочерней теме. Вы также можете сделать резервную копию по умолчанию woocommerce.css, если что-то случится с custom.файл 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_stylesheet_directory_uri () вместо get_template_directory_uri() и измените путь к файлу в соответствии с именем дочерней темы.


мой подход заключается в том, чтобы следовать принципу каскад CSS. Так что в основном тот, который загружает последний, переопределит предыдущие правила, если нет !важно!--9-->.

регистрация здесь:

//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">

Итак, какова идея загрузить пользовательский CSS после загрузки woocommerce.

Способ 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));
}

Надеюсь, один из методов поможет.