检查自定义分类所属的类别并更改样式

时间:2014-08-16 作者:hambos22

我想更改单个的css样式。php,属于基于类别的自定义分类法。我在分类学上做到了这一点。php的一些类别,但我不能使它在一个单一的工作。php。用于分类。我使用的phpis_tax 工作正常。对于单身。我使用的phphas_term 但什么都没有。

我做错了什么?两个文件的完整代码都是herehere

非常感谢。

这是分类法。php,一切都很好。

<?php get_header(); ?>
<div class="non-home-parallax product-listing-parallax" style="
<?php if( is_tax (\'product-cat\', \'fama-advance\') ) { ?>
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/advance.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-premium\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/premium.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-confectionary-solutions\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/confectionary.jpg\'); 
<?php }
elseif ( is_tax (\'product-cat\', \'fama-powder-solutions\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/powder.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-improvers\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/improvers.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-chocoday-creams\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/chocodaycreams.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-choco-day\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/chocoday.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-deliciozo\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/deliciozo.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-frutopia\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/frutopia.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-fruigel\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/fruigel.jpg\'); 
<?php } 
elseif ( is_tax (\'product-cat\', \'fama-creams\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/creams.jpg\'); 
<?php }  
elseif ( is_tax (\'product-cat\', \'fama-ice\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/ice.jpg\'); 
<?php }  
else { ?> <?php } ?> ">
        <div class="container-12">
            <div class="col-12">
                    <h4 style="
                    <?php if( is_tax (\'product-cat\', \'fama-advance\') ) { ?>
                     background-color: #ff9900; 
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-premium\') ) { ?> 
                    background-color: #004A93; 
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-confectionary-solutions\') ) { ?> 
                    background-color: #E7C388;                    
                    <?php }
                    elseif ( is_tax (\'product-cat\', \'fama-powder-solutions\') ) { ?> 
                    background-color: #FFED3D;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-improvers\') ) { ?> 
                    background-color: #FDBA2F;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-chocoday-creams\') ) { ?> 
                    background-color: #693A18;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-choco-day\') ) { ?> 
                    background-color: #3B210D;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-deliciozo\') ) { ?> 
                    background-color: #DB0070;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-frutopia\') ) { ?> 
                    background-color: #98005D;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-fruigel\') ) { ?> 
                    background-color: #BB001C;                    
                    <?php } 
                    elseif ( is_tax (\'product-cat\', \'fama-creams\') ) { ?> 
                    background-color: #96C031;                    
                    <?php }  
                    elseif ( is_tax (\'product-cat\', \'fama-ice\') ) { ?> 
                    background-color: #9FDAF1;                    
                    <?php }  
                    else { ?> <?php } ?> ">
                    <?php $term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) ); echo $term->name; ?></h4>

            </div>
        </div>
这是单曲的一些代码。php

<?php get_header(); ?>
<div class="non-home-parallax product-listing-parallax" style="
<?php if( has_term (\'fama-advance\', \'product-cat\') ) { ?>
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/advance.jpg\'); 
<?php } 
elseif ( has_term (\'fama-confectionary-solutions\', \'product-cat\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/premium.jpg\'); 
<?php } 
elseif ( has_term (\'fama-premium\', \'product-cat\') ) { ?> 
 background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/confectionary.jpg\'); 
<?php } 
else { ?> <?php } ?> ">

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

has_term 必须在循环内使用。如果在循环外使用它,则必须传递要检查的post ID或post对象。

在单曲中。php文件将代码放入循环中以检查当前帖子:

<?php get_header();

while(have_post) {
    the_post();
    ?>
    <div class="non-home-parallax product-listing-parallax" style="
     <?php if( has_term (\'fama-advance\', \'product-cat\') ) { ?>
          background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/advance.jpg\'); 
     <?php } elseif ( has_term (\'fama-confectionary-solutions\', \'product-cat\') ) { ?> 
          background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/premium.jpg\'); 
     <?php } elseif ( has_term (\'fama-premium\', \'product-cat\') ) { ?> 
          background-image:url(\'<?php echo get_template_directory_uri(); ?>/img/parallax/confectionary.jpg\'); 
     <?php } else { ?> <?php } ?> ">
           The rest of you code
 <?pphp } //end while
 get_footer(); ?>
此外,我建议您添加一个不同的class 而不是一个不同的style 属性并将样式放入CSS文件中。此外,最好定义一个返回类的函数,而不是在模板文件中定义一组丑陋的if-else语句。更好的是,使用post_class 功能在您的邮件容器中。此函数返回一个类字符串,您可以根据自定义分类法对其进行筛选以包含类。

在单曲中。php模板文件:

<?php get_header();

while(have_post) {
    the_post();
    ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
           The rest of you code
    </div>
 <?pphp } //end while
 get_footer(); ?>
在函数中。php文件:

// add product-cat in post class
add_filter( \'post_class\', \'product_cat_class\' );
function product_cat_class( $classes ) {
     global $post;
     $product_cats = get_the_terms( $post->ID, \'product-cat\' );
     foreach ( $product_cats as $product_cat ) {
         $classes[] = $product_cat->slug;
     }
     return $classes;
 }
在CSS中,例如:

.fama-advance {
          background-image: url(\'img/parallax/advance.jpg\');
}

结束

相关推荐

插件生成意外输出-没有PHP错误

我正在创建一个插件,创建一个我正在处理的自定义帖子类型。我跟着this tutorial. 我刚刚将其从movie\\u reviews更改为员工。我在PHP中没有发现任何语法错误,看起来一切正常,但当我在WordPress中激活插件时,它说它生成了3个字符的意外输出。我认为问题在于display\\u staff\\u member\\u meta\\u box函数,但它似乎没有任何错误。下面是我正在使用的代码。<?php /* Plugin Name: Staff Members