PHP搜索结果逻辑问题:elseif分支无法触发无结果红色样式
WordPress搜索结果标题样式修复方案
问题根源
原代码的条件判断逻辑存在两处错误:
- 只要URL中存在
s参数(哪怕搜索内容为空或无结果),第一个if (isset($_GET['s']))就会触发,导致elseif分支永远无法执行 isset($_GET['s']) == null的写法完全错误——isset()返回布尔值,和null比较的结果永远是false
修正后的代码
<?php // 有搜索词且存在匹配结果 if ( isset( $_GET['s'] ) && !empty( $_GET['s'] ) && $wp_query->found_posts > 0 ) : ?> <h2 class="black"> <?php echo sprintf( __( '%s Search Results for ', 'html5blank' ), $wp_query->found_posts ); echo get_search_query(); ?> </h2> <?php // 有搜索词但无匹配结果 elseif ( isset( $_GET['s'] ) && !empty( $_GET['s'] ) && $wp_query->found_posts == 0 ) : ?> <h2 class="red"> <?php echo sprintf( __( '%s Search Results for ', 'html5blank' ), $wp_query->found_posts ); echo get_search_query(); ?> </h2> <?php // 空搜索(无s参数或搜索词为空) else : ?> <h2 class="empty">Search <?php echo get_theme_mod( 'theme_options_name', '' ); ?></h2> <?php endif ?>
逻辑说明
- 黑色标题:当存在非空的搜索词,且查询到匹配的文章时触发
- 红色标题:当存在非空的搜索词,但未查询到任何匹配文章时触发
- 空搜索标题:当URL中没有
s参数,或搜索词为空时触发
内容的提问来源于stack exchange,提问作者Beary
相关产品推荐
相关产品推荐

