从插件类中删除_过滤器摘录_更多

时间:2013-08-23 作者:keeg

我正在尝试从插件类中删除过滤器。我需要从摘录中删除“继续阅读”链接。基本主题是210主题,他们正在应用过滤器twentyten_auto_excerpt_more. 我无法删除过滤器,我假设是因为我在一个类中:

class MyAwesomeClass {

private static $instance;

public static function instance() {
    if ( !isset( self::$instance ) ) {
        self::$instance = new MyAwesomeClass;
        self::$instance->setup_actions_and_filters();
    }
    return self::$instance;
}

private function __construct() {}

public function setup_actions_and_filters() {
    add_filter( \'excerpt_more\', array( $this, \'change_excerpt_more\' ) );
}

public function change_excerpt_more( $excerpt ) {
    remove_filter( \'excerpt_more\', \'twentyten_auto_excerpt_more\' );
    return \'\';
}

}

MyAwesomeClass::instance();
我正在尝试删除的筛选器:

add_filter( \'excerpt_more\', \'twentyten_auto_excerpt_more\' );
有没有办法做到这一点?

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

原来是的get_the_excerpt 需要删除的过滤器,在任何情况下都必须通过after_setup_theme:

public function setup_actions_and_filters() {
    add_action( \'after_setup_theme\', array( $this, \'run_plugin_setup\' ) );
}

public function run_plugin_setup() {
    remove_all_filters( \'get_the_excerpt\' );
}
希望这对别人有帮助。

SO网友:s_ha_dum

The priority value has to match on remove_filter. 我猜不是这样的。尝试:

remove_filter( \'excerpt_more\', \'twentyten_auto_excerpt_more\' );
或查找add_filter( \'excerpt_more\', \'twentyten_auto_excerpt_more\' 并检查优先级,然后使其匹配。

结束

相关推荐

Apply_Filters()和_Excerpt提供了意外的结果

我觉得我一定错过了一些显而易见的东西,但我似乎无法让WordPress合作。我正在用一个函数生成Facebook OG标签。除了摘录,一切都很好。自get_the_excerpt($post->ID), 有没有其他方法可以创建摘录而不必创建一个全新的循环?我觉得这太过分了。我的第一反应是apply_filters():$description = apply_filters(\'the_excerpt\', get_post($post->ID)->post_content);