Я хочу изменить 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" по родительской категории?