我遇到了一个while循环,该循环遍历了一个称为“经销商”的自定义帖子类型。
每个经销商都有一个父类别,其中一些有子类别。
我想在循环中仅显示一次父类别的名称,但这不起作用。
到目前为止,我已经获得了此代码,但是现在它显示了3次“ Nederland”,因为有3个经销商的父类别为“ Nederland”。
<?php while ( have_posts() ): the_post();
$categories = get_the_category();
$cat_name = $categories[0]->cat_name;
$titel_categorie = false;
if($cat_name == "Nederland" && !$titel_categorie)
{
echo "Nederland";
$titel_categorie = true;
}
?>
<div class="col-lg-4">
<span class="dealer-title"><?php the_title(); ?></span>
<span class="dealer-plaats"><?php the_field('plaats'); ?></span>
<span class="dealer-plaats"><?php the_field('telefoonnummer'); ?></span>
<span class="dealer-plaats"><?php the_field('website'); ?></span>
<span class="dealer-plaats"><?php the_field('e-mailadres'); ?></span>
</div>
<?php endwhile; ?>
我以前曾经使用过这种方法,它确实有效,但现在却没有。
还有其他建议吗?
编辑
感谢大家的回答,其中一些人工作了一些,但并没有解决我现在所处的完整问题。
我设法部分地将其放置在while循环之外,但我也得到了子类别。
<?php
$titel_categorie_nederland = false;
$titel_categorie_belgie = false;
$titel_categorie_italie = false;
$titel_categorie_polen = false;
$titel_categorie_noord_brabant = false;
while ( have_posts() ): the_post();
$categories = get_the_category();
$cat_name = $categories[0]->cat_name;
if($cat_name == "Nederland" && !$titel_categorie_nederland)
{
?>
<div class="col-lg-12"><h3>Nederland</h3></div>
<?php
$titel_categorie_nederland = true;
}
if($cat_name == "Polen" && !$titel_categorie_polen)
{
?>
<div class="col-lg-12"><h3>Polen</h3></div>
<?php
$titel_categorie_polen = true;
}
if($cat_name == "Belgie" && !$titel_categorie_belgie)
{
?>
<div class="col-lg-12"><h3>Belgie</h3></div>
<?php
$titel_categorie_belgie = true;
}
if($cat_name == "Italie" && !$titel_categorie_italie)
{
?>
<div class="col-lg-12"><h3>Italie</h3></div>
<?php
$titel_categorie_italie = true;
}
?>
<div class="col-lg-4">
<span class="dealer-title"><?php the_title(); ?></span>
<span class="dealer-plaats"><?php the_field('plaats'); ?></span>
<span class="dealer-plaats"><?php the_field('telefoonnummer'); ?></span>
<span class="dealer-plaats"><?php the_field('website'); ?></span>
<span class="dealer-plaats"><?php the_field('e-mailadres'); ?></span>
</div>
<?php endwhile; ?>
这是行之有效的方法,但不是一种干净的编码方式,并且在添加新国家/地区时,以这种方式展望未来并非明智之举。
我有一个自定义职位类型的经销商,主要类别是国家/地区,而替代是省份。有没有办法用更简洁的代码来显示它?
答案 0 :(得分:1)
使用break将阻止循环运行
foreach ( $terms as $term ) {
$land_titel = $term->name;
if($land_titel == "Nederland" && !$land_titel_nederland) {
echo "Nederland";
break;
}
}
如果您想在另一个循环(例如while循环)中中断循环,则可以使用continue。
foreach ( $terms as $term ) {
$land_titel = $term->name;
if($land_titel == "Nederland" && !$land_titel_nederland) {
echo "Nederland";
continue;
}
}
答案 1 :(得分:0)
这应该做到:
<?php
$post_type = 'dealers';
// Get all the taxonomies for this post type
$taxonomies = get_object_taxonomies( (object) array( 'post_type' => $post_type ) );
foreach( $taxonomies as $taxonomy ) :
// Gets every "category" (term) in this taxonomy to get the respective posts
$terms = get_terms( array(
'taxonomy' => $taxonomy,
'parent' => 0
) );
foreach( $terms as $term ) :
echo "<h1>".$term->name."</h1>";
$posts = new WP_Query( "taxonomy=$taxonomy&term=$term->slug&posts_per_page=-1" );
if( $posts->have_posts() ): while( $posts->have_posts() ) : $posts->the_post();
?>
<div class="col-lg-4">
<span class="dealer-title"><?php the_title(); ?></span>
<span class="dealer-plaats"><?php the_field('plaats'); ?></span>
<span class="dealer-plaats"><?php the_field('telefoonnummer'); ?></span>
<span class="dealer-plaats"><?php the_field('website'); ?></span>
<span class="dealer-plaats"><?php the_field('e-mailadres'); ?></span>
</div>
<?php endwhile; endif;
endforeach;
endforeach;
?>
答案 2 :(得分:0)
在循环外设置(同时)
(station_id ,programme_start , programme_end, title, episode, season, year)