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

时间:2016-10-20 03:42:59

标签: php wordpress override

我想在插件事件管理器的类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);
    }
}

所以我创建了自己的插件并放在代码之下,但没有运气,不知道为什么它不起作用虽然我阅读并遵循了一些手册,如Is it possible to replace a function within a PHP class?

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
    }           
}

1 个答案:

答案 0 :(得分:0)

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

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