我想重写函数get_post()类EM_Tickets插件事件管理器
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);