You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中PHP条件判断失效问题求助

解决single_cat_title()条件判断时直接输出的问题

嘿,我懂你碰到的这个坑了——single_cat_title()这个WordPress函数默认是直接把分类标题输出到页面上的,所以你用它做条件判断的时候,它先自顾自把"Wedding"打印出来了,导致你的判断逻辑根本没起作用对吧?别慌,咱们来调整一下代码就能搞定:

核心修复:修改single_cat_title()的输出参数

single_cat_title()有两个参数,第二个参数$display默认是true(直接输出内容),咱们把它改成false,这样函数就会返回标题文本而不是直接输出了。修改后的代码如下:

<div id="content" class="site-content" role="main">
    <div class="layout-full">
        <header class="entry-header">
            <h1 class="entry-title"><?php single_cat_title(); ?></h1>
            <!-- 这里正常输出分类标题 -->
        </header>

        <!-- Wedding 滑块 -->
        <?php if ( single_cat_title("", false) == "Wedding") { 
            echo do_shortcode('[metaslider id="1710"]'); 
        } ?>

        <!-- Portrait 滑块 -->
        <?php if ( single_cat_title("", false) == "Portrait") { 
            echo do_shortcode('[metaslider id="1718"]'); 
        } ?>

        <!-- Travel 滑块 -->
        <?php if ( single_cat_title("", false) == "Travel") { 
            echo do_shortcode('[metaslider id="1714"]'); 
        } ?>
    </div>
</div>

更健壮的替代方案:用分类Slug判断

如果担心以后分类标题会修改(比如把"Wedding"改成"婚礼"),用分类的slug来判断会更稳妥——slug一般不会轻易改动,能让代码更健壮。咱们可以用get_queried_object()获取当前分类对象,然后判断slug:

<div id="content" class="site-content" role="main">
    <div class="layout-full">
        <header class="entry-header">
            <h1 class="entry-title"><?php single_cat_title(); ?></h1>
        </header>

        <?php 
        $current_cat = get_queried_object();
        // 先判断是否是分类页面,避免报错
        if ( $current_cat && is_a($current_cat, 'WP_Term') ) {
            switch($current_cat->slug) {
                case 'wedding':
                    echo do_shortcode('[metaslider id="1710"]');
                    break;
                case 'portrait':
                    echo do_shortcode('[metaslider id="1718"]');
                    break;
                case 'travel':
                    echo do_shortcode('[metaslider id="1714"]');
                    break;
                // 可以加默认情况,比如显示默认滑块或者什么都不显示
                default:
                    // echo do_shortcode('[metaslider id="默认ID"]');
                    break;
            }
        }
        ?>
    </div>
</div>

这样不管分类标题怎么改,只要slug不变,滑块的显示逻辑就不会出问题,而且用switch结构比多个if看起来更整洁。

内容的提问来源于stack exchange,提问作者Sourabh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:32:40