我正在使用一个名为“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
}
我不想更改插件代码,因为我想在插件更新时再次删除它。。。
我如何在需要时过滤掉这些操作?
最合适的回答,由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钩子创建对象。
您还必须确保要在条件检查中使用的模板标记在您选择的挂钩中可用。