书接上文,找到钩子的目的是为了干掉它。
add_filter和add_action函数的第二个参数,可以是散兵游勇的单个函数,也可以是某个类的成员函数。
add_filter('the_content','func');
这种形式注册的钩子,可以直接用
remove_filter('the_content','func');
删掉。
但
add_action('init', array($this, 'func2'), 9);
这种形式注册的钩子,在类以外就无法删除了。因为你根本无法获得$this这玩意儿。
所幸我找到了解决方案,封装了一个函数。只要给函数多传一个类名,就可以删除了。
函数实现如下:
function remove_anonymous_object_hook( $tag, $class, $method ) { $filters = $GLOBALS['wp_filter'][ $tag ]; if ( empty ( $filters ) ) { return; } foreach ( $filters as $priority => $filter ) { foreach ( $filter as $identifier => $function ) { if ( is_array( $function) and is_a( $function['function'][0], $class ) and $method === $function['function'][1] ) { //action也可以用remove_filter删除。 remove_filter( $tag, array ( $function['function'][0], $method ), $priority ); } } } }
对于wprdpress底层来说,filter和action其实是同一个东西,所以这个函数可以对付filter和action。
如果函数是static函数,用这个函数是无法删掉的,而应该用
remove_filter('the_content','class::func3');
进行删除。
大舅子新年好!
按照你假日基本不更新的尿性,这文……不会又是定时发布的吧?
你外甥
很明显,你搞错了!
我从不定时发。wp-cron都被我删了。
不过你差不多猜对了,不让我的草稿陪我过年。
新年快乐,拜个晚年-_-
新年快乐,别蹂躏博客了
那蹂躏谁
这个主题不错啊,还有书卷味啊
新年快乐。
虽然不懂,但支持还是必须支持的
用typecho吧,简单简洁,哈哈~~
这不可能。
如果非要用,我一定会把WP的功能都改过去的。
再说十多年的数据会把我累死的。我指的是各种WP官方表以外的内容。
一直都没有耐心研究下WP的代码。
wp玩的就是一个折腾。
文首配图也不是PHP啊。。
配图跟正文不符也不是一天两天了。
回答的竟这么有道理。。
图片。。挺好看
然而图是php么