WordPress single.php多分类布局If/Else逻辑错误排查求助
WordPress single.php分类布局条件判断错误修复
你的代码条件结构逻辑混乱,导致分类2的内容输出后,会继续执行分类3的代码块。具体问题:
- 当文章属于分类2时,进入第一个
else分支,匹配cat2的if后输出分类2的内容,接着第12行的endif关闭了分类2的判断,之后的分类3内容属于第一个else分支的一部分,不管分类2是否匹配都会执行,所以会同时显示分类2和3的布局。 - 删除第12行的
endif后,PHP的if语句结构不闭合,触发语法错误,导致页面空白。
修复方案
使用elseif构建互斥的条件判断,确保每个分类仅匹配对应布局,代码结构更清晰:
<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 elseif(in_category('cat2')): ?> <div><h1><?php the_title(); ?></h1></div> <p>2</p> <?php else: ?> <div><h1><?php the_title(); ?></h1></div> <p>3</p> <?php endif; ?> <?php endwhile; else: ?> <p>没有文章可以显示</p> <?php endif; ?> </div> </div>
修复后效果
- 分类1:仅输出分类1的标题和布局内容
- 分类2:仅输出分类2的标题和布局内容,不会再显示分类3的内容
- 分类3:仅输出分类3的标题和布局内容(注:你原代码中分类3的输出标题写错为
Cat 2 Title,修复后会显示正确的文章标题)
内容的提问来源于stack exchange,提问作者Elaine Byene
相关产品推荐
相关产品推荐

