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

WordPress如何调用YITH插件类中的love()函数?

如何调用YITH类中的love()函数

嘿,我来帮你搞定这个调用问题~先看你提供的插件代码:这个YITH_WooCommerce_Question_Answer类只是被定义了,但没有实例化,而且love()是普通的非静态方法,这大概率就是你之前调用没生效的核心原因。下面给你两种靠谱的解决方案:

方案一:实例化类后调用方法(推荐,无需修改插件)

这种方法不用改动插件代码,直接在主题文件wp-content/themes/xtocky/woocommerce/content-product.php的合适位置插入以下代码即可:

// 先检查类是否已加载,避免出现致命错误
if ( class_exists( 'YITH_WooCommerce_Question_Answer' ) ) {
    // 实例化这个类
    $yith_qna_instance = new YITH_WooCommerce_Question_Answer();
    // 调用love()方法
    $yith_qna_instance->love();
}

为什么之前没生效?

大概率是你直接尝试调用方法但没先实例化类,或者没加类存在的判断(比如插件加载延迟导致类还没定义就调用了)。加了class_exists判断能确保代码只在类可用时执行,避免报错。

方案二:将方法改为静态方法(需修改插件,谨慎选择)

如果你愿意修改插件代码(注意:插件更新后你的修改会丢失,所以尽量别选这个),可以把love()改成静态方法:
在wp-content/plugins/yith/closs.yith.php里修改方法:

if ( ! class_exists ( 'YITH_WooCommerce_Question_Answer' ) ) { 
    class YITH_WooCommerce_Question_Answer { 
        // 加上static关键字,改成静态方法
        public static function love(){ 
            echo "kkkk"; 
        } 
    } 
}

然后在主题文件里直接调用:

if ( class_exists( 'YITH_WooCommerce_Question_Answer' ) ) {
    YITH_WooCommerce_Question_Answer::love();
}

额外小提示

如果这个YITH插件本身在其他地方已经实例化了这个类(很多插件会把实例存到全局变量里),你也可以尝试用全局变量调用:

// 引入全局变量
global $YITH_WooCommerce_Question_Answer;
// 检查变量存在且方法可用
if ( isset( $YITH_WooCommerce_Question_Answer ) && method_exists( $YITH_WooCommerce_Question_Answer, 'love' ) ) {
    $YITH_WooCommerce_Question_Answer->love();
}

不过这个得看插件本身的实现,如果你不确定,用方案一最稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:50:58