如何根据woocommerce父产品类别更改页面的CSS?

时间:2019-05-02 01:53:29

标签: css wordpress woocommerce

我想根据所选的woocommerce父产品类别更改页面的CSS。我想根据这些类别更改导航栏和页脚的配色方案。我已经创建了样式表来实现此目的,并且如果我在浏览器的开发人员选项中更改了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 custom style for specific product category?

这里遇到的问题是:

1)正文类仍为“定制支持”

2)我的css文件专用于更改页眉和页脚的颜色

基本上,我只想根据父产品类别更改页眉和页脚的配色方案。

编辑:

部分解决-我创建了一个单独的“ 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”?

0 个答案:

没有答案