Как изменить CSS моей страницы в зависимости от категории родительского продукта woocommerce? - PullRequest
0 голосов
/ 02 мая 2019

Я хочу изменить CSS моей страницы в зависимости от выбранной категории родительского продукта woocommerce. Я хочу изменить цветовую схему моего navbar и нижнего колонтитула на основе этих категорий. Я уже создал таблицы стилей для достижения этой цели, и если я изменю путь CSS в опциях разработчика в моем браузере, это сработает.

Я попытался отредактировать файл taxonomy-product_cat.php и смог успешно перейти на другую страницу, используя следующий код:

// Get current category slug
global $wp_query;
$cat_slug = $wp_query->query_vars['product_cat'];

// Call template conditionally
if($cat_slug == 'sport-bikes') {
    wc_get_template( 'archive-land.php' );
} else  {
    wc_get_template( 'archive-product.php' );   
}

Здесь я столкнулся с двумя проблемами:

1) Это работает только для определенной подкатегории - если я использую родительскую категорию «земля», она не работает.

2) Я не могу редактировать CSS из любого шаблона, который я использую. В этом случае я создал шаблон «archive-land.php».

Я также попытался добавить в свой файл functions.php следующее:

// add taxonomy term to body_class
function woo_custom_taxonomy_in_body_class( $classes ){
  if( is_singular( 'product' ) )
  {
    $custom_terms = get_the_terms(0, 'product_cat');
    if ($custom_terms) {
      foreach ($custom_terms as $custom_term) {
        $classes[] = 'product_cat_' . $custom_term->slug;
      }
    }
  }
  return $classes;
}
add_filter( 'body_class', 'woo_custom_taxonomy_in_body_class' );

На основании следующего решения по этой ссылке: Пользовательский стиль Woocommerce для определенной категории продуктов?

Здесь встречаются следующие проблемы:

1) Класс body остается как "customize-support"

2) Мои css-файлы предназначены для изменения цвета верхних и нижних колонтитулов

По сути, я просто хочу изменить цветовую схему моих верхних и нижних колонтитулов на основе родительской категории продукта.

Edit:

Частично решено - я создал отдельные "archive-land.php" и "archive-marine.php" и добавил следующий код в начало каждого файла, вызывающего нужные мне css-файлы:

<?php
function c3land_theme_styles(){   
    wp_enqueue_style( 'hoverland', get_template_directory_uri() . '/css/hoverland.css' );
    wp_enqueue_style( 'land', get_template_directory_uri() . '/css/land.css' );            
}
add_action( 'wp_enqueue_scripts','c3land_theme_styles' );
?>

Это касается переключения css, но мне все еще нужно, чтобы они были изменены в родительской категории, а не в подкатегориях. Вот мой обновленный код в файле taxonomy-product_cat.php:

// Get current category slug
global $wp_query;
$cat_slug = $wp_query->query_vars['product_cat'];

// Call template conditionally
if($cat_slug == 'sport-bikes') {
    wc_get_template( 'archive-land.php' );
} 
if($cat_slug == 'outboard-motors') {
    wc_get_template( 'archive-marine.php' );
} 
else  {
    wc_get_template( 'archive-product.php' );   
}

1) Есть ли потенциальные проблемы в моем первоначальном предложенном решении или есть более элегантный / правильный способ достижения этого?

2) Как мне назвать мой "archive-land.php или archive-marine.php" по родительской категории?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...