我正在寻找一种方法,根据帖子归属的类别将一个类注入一个自定义帖子类型的div中。这将有三个类别;
电子书(班级名称 cat1 )
信息图(班级名称 cat2 )
案例研究(班级名称 cat3 )
到目前为止,我的代码是调用自定义帖子类型的。目前,该页面将所有帖子显示为最后一个类别 - 案例研究(cat3)。
<?php $loop = new WP_Query( array( 'post_type' => 'resources', 'posts_per_page' => -1 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php
$post = $wp_query->post;
if ( in_category('ebook', $post->ID) ) { ?>
<div <?php body_class('tile scale-anm cat1 all end'); ?>>
<section class="small-12 medium-4 large-3 columns end">
<section class="grid">
<figure class="effect-sarah">
<img src="<?php the_field('img'); ?>" alt="img13"/>
<figcaption>
<h2>Resource</h2>
<p class="signika"><?php the_field('desc'); ?></p>
<p class="bold"><?php the_field('btnText'); ?></p>
<a href="<?php echo esc_url( get_permalink() ); ?>" target="_blank"><?php the_field('btnText'); ?></a>
</figcaption>
</figure>
</section>
</section>
</div>
<?php
}
elseif ( in_category('infographic', $post->ID) ) { ?>
<div <?php body_class('tile scale-anm cat2 all end'); ?>>
<section class="small-12 medium-4 large-3 columns end">
<section class="grid">
<figure class="effect-sarah">
<img src="<?php the_field('img'); ?>" alt="img13"/>
<figcaption>
<h2>Resource</h2>
<p class="signika"><?php the_field('desc'); ?></p>
<p class="bold"><?php the_field('btnText'); ?></p>
<a href="<?php echo esc_url( get_permalink() ); ?>" target="_blank"><?php the_field('btnText'); ?></a>
</figcaption>
</figure>
</section>
</section>
</div>
<?php
}
elseif ( in_category('casestudy', $post->ID) ) { ?>
<div <?php body_class('tile scale-anm cat3 all end'); ?>>
<section class="small-12 medium-4 large-3 columns end">
<section class="grid">
<figure class="effect-sarah">
<img src="<?php the_field('img'); ?>" alt="img13"/>
<figcaption>
<h2>Resource</h2>
<p class="signika"><?php the_field('desc'); ?></p>
<p class="bold"><?php the_field('btnText'); ?></p>
<a href="<?php echo esc_url( get_permalink() ); ?>" target="_blank"><?php the_field('btnText'); ?></a>
</figcaption>
</figure>
</section>
</section>
</div>
<?php
}
?>
<?php endwhile; wp_reset_query(); ?>
答案 0 :(得分:0)
干,不要重复自己。您的循环也存在一些问题。
使用WP_Query后,请使用wp_reset_postdata()
而不是wp_reset_query()
。
摆脱$post = $wp_query->post;
,使用get_the_ID()
然后我们检查类别并将类名分配给变量$catclass
,我们将其插入body_class()
的参数中,注意使用"
代替'
}
试试这个:
<?php $loop = new WP_Query( array( 'post_type' => 'resources', 'posts_per_page' => -1 ) ); ?>
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php
$catclass = "";
if (in_category('ebook', get_the_ID())) {
$catclass="cat1";
} else if(in_category('infographic', get_the_ID())) {
$catclass="cat2";
} else if(in_category('casestudy', get_the_ID())){
$catclass="cat3";
}
?>
<div <?php body_class("tile scale-anm {$catclass} all end"); ?>>
<section class="small-12 medium-4 large-3 columns end">
<section class="grid">
<figure class="effect-sarah">
<img src="<?php the_field('img'); ?>" alt="img13"/>
<figcaption>
<h2>Resource</h2>
<p class="signika"><?php the_field('desc'); ?></p>
<p class="bold"><?php the_field('btnText'); ?></p>
<a href="<?php echo esc_url( get_permalink() ); ?>" target="_blank"><?php the_field('btnText'); ?></a>
</figcaption>
</figure>
</section>
</section>
</div>
<?php
endwhile;
wp_reset_postdata(); ?>
如果您真的感到活泼,可以将if/else
语句替换为:
switch(true){
case in_category('ebook', get_the_ID()):
$catclass = "cat1";
break;
case in_category('infographic', get_the_ID()):
$catclass = "cat2";
break;
case in_category('casestudy', get_the_ID()):
$catclass = "cat3";
break;
default:
$catclass = "";
}