删除SEO旗舰插件添加的操作

时间:2013-01-05 作者:Amna Ahmed

我正在尝试删除一些页面的SEO ultimate插件添加的操作挂钩。它添加到插件类中的方式是

    //Hook to output all <head> code i changed the priority to 2
    add_action(\'wp_head\', array(&$this, \'template_head\'), 2);
SEO插件创建如下全局变量

global $seo_ultimate;
    $seo_ultimate =& new SEO_Ultimate(__FILE__);
在我的插件中,我尝试通过

add_action(\'wp_head\',array($this, \'remove_seo_header\'),1);

    }
    function remove_seo_header() {

         remove_action(\'wp_head\', array($seo_ultimate,\'template_head\'));
}
但它并没有删除该操作。有人能指出我错在哪里吗?

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

您必须使用相同的优先级,并且需要访问全局变量:

function remove_seo_header() {

    remove_action(
        \'wp_head\', 
        array( $GLOBALS[\'seo_ultimate\'], \'template_head\' ), 2 
    );
}

SO网友:Luke Gedeon

您还可以通过注册的钩子进行foreach,如下所示:

function remove_filter_in_class( $tag, $function_to_remove, $priority, $class ) {
    if ( isset( $GLOBALS[\'wp_filter\'][ $tag ][ $priority ] ) ) {
        foreach ( $GLOBALS[\'wp_filter\'][ $tag ][ $priority ] as $key => $function ) {
            if ( is_array( $function[\'function\'] )
                && $function_to_remove === array_pop( $function[\'function\'] )
                && $class === get_class( array_pop( $function[\'function\'] ) )
            ) {
                return remove_filter( $tag, $key, $priority );
            }
        }
    }
}
资料来源:https://gist.github.com/lgedeon/7806513f47b6466fc2cb

结束

相关推荐

Add_Filters()和Apply_Filter()有什么作用?

我有点困惑,为什么这不起作用-尽管必须说,我不太确定是什么apply_filters() 和add_filter 正在做,所以任何一般性的提示都会很好!我想要一个查询,在一个帖子页面上显示之前的五篇帖子。我正在发送当前帖子的日期,并希望应用一个过滤器,过滤出早于此的帖子。function sw_filter_posts_before( $where = \'\', $date) { $where .= \" AND post_date < \'\" . $date . \"