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
相关产品推荐
相关产品推荐

