过滤掉wp head/wp_footer中的一些插件操作

时间:2014-03-02 作者:Sagive

我正在使用一个名为“syntaxhighlighter”的插件。

I know not to ask for plugin specific questions 而是如何筛选出有条件地添加到wp\\u head/wp\\u footer的操作。。。

This is a part of the plugin script:

// Outputting SyntaxHighlighter\'s JS and CSS
add_action( \'wp_head\', array( $this, \'output_header_placeholder\' ), 15 );
add_action( \'wp_footer\', array( $this, \'maybe_output_scripts\' ), 15 );

Now, i would like to add a filter that says:

if(is_home() || is_category()) {
   // REMOVE THOSE SCRIPS
}

我不想更改插件代码,因为我想在插件更新时再次删除它。。。

我如何在需要时过滤掉这些操作?

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

您可以尝试以下操作(未经测试):

add_action( \'wp_head\', 
   function(){
       // your conditions:
       if( is_home() || is_category() )
       {
           // access the global SyntaxHighlighter object instantiated at \'init\'.
           global $SyntaxHighlighter;

           // remove your action hooks:
           remove_action( \'wp_head\',    
                           array( $SyntaxHighlighter, \'output_header_placeholder\' ),
                           15 );
           remove_action( \'wp_footer\', 
                           array( $SyntaxHighlighter, \'maybe_output_scripts\' ),
                           15 );
       }
   }
);
使用模板标记有条件地删除这些操作挂钩。我们使用wp_head 具有默认优先级的操作10.

您可以使用其他挂钩,但它们必须在wp_head 具有优先权15$SyntaxHighlighter 通过init钩子创建对象。

您还必须确保要在条件检查中使用的模板标记在您选择的挂钩中可用。

结束

相关推荐

如何访问调用Apply_Filters()的函数中的变量?

我试图根据调用的函数中的变量是否apply_filters() 等于特定值。该变量不会传递给apply_filters() 参数。这或许可以解释我的意思:// function in wordpress core function get_var_b() { // generating $var_a $var_a = \"a\"; // some code ... $var_b = apply_filters(\'get_var_b\