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

如何在WordPress短码的字符串拼接中嵌入条件判断

WordPress短码动态替换tooltip图标变量解决方案

你可以通过以下几种方式实现根据短码属性动态选择对应图标变量,避免在字符串拼接中直接使用if语句:

方法1:变量变量(简洁直接)

利用PHP的变量变量特性,直接通过属性值拼接变量名获取对应图标:

function tooltip_shortcode($atts, $content = null) {
    // 初始化短码属性,设置默认颜色为gray
    $atts = shortcode_atts([
        'text' => '',
        'color' => 'gray'
    ], $atts);

    // 定义你的图标变量
    $blue_tooltip_icon = '<i class="icon-blue"></i>';
    $red_tooltip_icon = '<i class="icon-red"></i>';
    $gray_tooltip_icon = '<i class="icon-gray"></i>';

    // 构建目标变量名并获取对应值,兜底用默认图标
    $target_var = $atts['color'] . '_tooltip_icon';
    $selected_icon = isset($$target_var) ? $$target_var : $gray_tooltip_icon;

    // 拼接输出内容
    return '<span data-title="'.$atts['text'].'" class="tooltip">'.$content . $selected_icon.'</span>';
}
add_shortcode('tooltip', 'tooltip_shortcode');

方法2:Switch语句(逻辑清晰)

通过switch语句明确匹配颜色属性,适合需要额外逻辑判断的场景:

function tooltip_shortcode($atts, $content = null) {
    $atts = shortcode_atts([
        'text' => '',
        'color' => 'gray'
    ], $atts);

    $blue_tooltip_icon = '<i class="icon-blue"></i>';
    $red_tooltip_icon = '<i class="icon-red"></i>';
    $gray_tooltip_icon = '<i class="icon-gray"></i>';

    // 根据颜色选择对应图标
    switch($atts['color']) {
        case 'blue':
            $selected_icon = $blue_tooltip_icon;
            break;
        case 'red':
            $selected_icon = $red_tooltip_icon;
            break;
        default:
            $selected_icon = $gray_tooltip_icon;
    }

    return '<span data-title="'.$atts['text'].'" class="tooltip">'.$content . $selected_icon.'</span>';
}
add_shortcode('tooltip', 'tooltip_shortcode');

方法3:数组映射(易扩展维护)

将颜色与图标对应关系存入数组,后续新增颜色只需修改数组,无需改动逻辑:

function tooltip_shortcode($atts, $content = null) {
    $atts = shortcode_atts([
        'text' => '',
        'color' => 'gray'
    ], $atts);

    // 颜色-图标映射数组
    $tooltip_icons = [
        'blue' => '<i class="icon-blue"></i>',
        'red' => '<i class="icon-red"></i>',
        'gray' => '<i class="icon-gray"></i>'
    ];

    // 获取选中图标,不存在则用默认gray
    $selected_icon = $tooltip_icons[$atts['color']] ?? $tooltip_icons['gray'];

    return '<span data-title="'.$atts['text'].'" class="tooltip">'.$content . $selected_icon.'</span>';
}
add_shortcode('tooltip', 'tooltip_shortcode');

使用示例

在文章或页面中调用短码时,指定color属性即可:

[tooltip text="提示内容" color="red"]鼠标悬停显示提示[/tooltip]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 22:55:27