繁体   English   中英

如何在Wordpress中覆盖插件类的功能?

[英]How can I override function of plugin 's class in Wordpress ?

我想在插件事件管理器的EM_Tickets类中覆盖函数get_post()

class EM_Tickets extends EM_Object implements Iterator{
/**
 * Retrieve multiple ticket info via POST
 * @return boolean
 */
function get_post(){
    // something here

    return apply_filters('em_tickets_get_post', count($this->errors) == 0, $this);
    }
}

所以我创建了自己的插件,并在下面的代码中放上了代码,但是没有运气,尽管我阅读并遵循了一些类似手册,但不知道为什么它不起作用? 是否可以在PHP类中替换函数?

class EM_Tickets_Child extends EM_Tickets implements Iterator{

    public function get_post(){
        file_put_contents('log.txt', 'in child class', FILE_APPEND | LOCK_EX);
        //something here
    }           
}

您在原始代码上有一个过滤器(apply_filters)。 您只需要钩子并创建一个函数来覆盖返回值,无需扩展插件类,但这是另一种方法。

add_action('em_ticket_get_posts', array('Em_tickets', 'my_new_get_post), 10, 2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM