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

WordPress中Uxper_Room方法调用报错,求正确写法及相关说明

问题分析与修正方案

1. 类未正确加载或不存在

如果报错提示Class 'Uxper_Room' not found,说明类文件没被加载到当前环境:

  • 确认Uxper_Room类的定义文件已通过require_once/include_once或WordPress的get_template_part引入。比如在主题functions.php开头添加:
    require_once get_template_directory() . '/includes/class-uxper-room.php';
    
  • 若类属于插件,要确保插件已激活,且类加载时机早于调用代码(可通过plugins_loaded钩子提前加载)。

2. 方法参数不匹配

你两处调用的参数数量不一致:

  • functions.php传了2个参数:get_the_ID() + true
  • review-order.php只传了1个参数:$room_base

统一参数调用逻辑

先明确check_room_price的方法定义,假设标准写法是:

public static function check_room_price($room_id, $format_price = false) {
    // 从自定义字段获取房间价格
    $raw_price = get_post_meta($room_id, 'room_base_price', true);
    // 格式化价格(如添加货币符号)
    return $format_price ? '$' . number_format($raw_price, 2) : $raw_price;
}

对应修正两处调用:

  • functions.php:确保get_the_ID()返回有效房间ID(当前上下文是房间文章类型)
    if (get_post_type(get_the_ID()) === 'room' && class_exists('Uxper_Room')) {
        Uxper_Room::check_room_price(get_the_ID(), true);
    }
    
  • review-order.php:补全参数,同时校验$room_base有效性
    $room_base = isset($room_base) && !empty($room_base) ? $room_base : 0;
    if (class_exists('Uxper_Room') && $room_base) {
        $room_price = Uxper_Room::check_room_price($room_base, true);
    ?>
    <span class="accent-color"><?php echo esc_html($room_price ?: 'N/A'); ?></span>
    <?php } ?>
    

3. 返回值与输出处理

如果check_room_price返回null/false(比如找不到对应价格),直接输出会显示空内容,可添加兜底逻辑:

$room_price = Uxper_Room::check_room_price($room_base);
echo esc_html($room_price ? $room_price : '暂无价格');

通用注意事项

  • 调用静态方法前,必须用class_exists('Uxper_Room')做判断,避免触发致命错误
  • 用error_log()调试参数和返回值,方便定位问题:
    error_log('当前房间ID:' . $room_base);
    error_log('价格返回值:' . print_r(Uxper_Room::check_room_price($room_base), true));
    
  • 保持使用esc_html()转义输出内容,避免XSS漏洞,你当前的做法是正确的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:42:48