我试图在 WordPress 中显示 3 个不同类别的 3 种不同布局,但失败了,因为第二个类别输出也显示了第三个类别:
我给出的条件哪里错了?请帮忙。
第 12 行
<?php endif ?>
感觉它不应该在那里,但删除它会出现一个空白页。
<div class="details">
<div class="container">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if(in_category('cat1')): ?>
<div><h1><?php the_title(); ?></h1></div>
<p>1</p>
<?php else: ?>
<?php if(in_category('cat2')): ?>
<div><h1><?php the_title(); ?></h1></div>
<p>2</p>
<?php else: ?>
<?php endif ?>
<div><h1><?php the_title(); ?></h1></div>
<p>3</p>
<?php endif ?>
<?php endwhile; else: ?>
<p>There no posts to show</p>
<?php endif; ?>
</div>
</div>
Cat1
的输出是正确的:
<h1>Cat 1 Title</h1>
<p>1</p>
Cat2
的输出不正确并且也显示Cat3:
<h1>Cat 2 Title</h1>
<p>2</p>
<h1>Cat 3 Title</h1>
<p>3</p>
Cat3
的输出是正确的:
<h1>Cat 2 Title</h1>
<p>3</p>
您有一个
else
,后跟一个 endif
。这与 else {}
相同(不执行任何操作)。
我已经更正了原始代码中的缩进,您现在可以明白为什么它同时显示 cat2 和 3 了:
<div class="details">
<div class="container">
<?php
if (have_posts()) {
while (have_posts()) {
the_post();
if(in_category('cat1')) {
echo "<div><h1>".the_title()."</h1></div>";
echo "<p>1</p>";
} else {
if(in_category('cat2')) {
echo "<div><h1>".the_title()."</h1></div>";
echo "<p>2</p>";
} else {
}
echo "<div><h1>".the_title()."</h1></div>";
echo "<p>3</p>";
}
}
} else {
echo "<p>There no posts to show</p>";
}
</div>
</div>