Remove action from shortcode

时间:2012-04-03 作者:user3316

函数中有add\\u action()函数,该函数是add\\u shortcode()的回调函数。你知道如何在自定义插件的帮助下删除这个动作吗?我是否应该挂接到稍后调用的任何操作,然后再添加\\u shortcode()函数?我不想删除和重新添加短代码,因为它之外还有巨大的功能。

简单示例:

function test_shortcode() {
  ... other code ...
  add_action( \'some_hook\', \'custom_function\');
  ... other code ...
}

add_action( \'wp_head\', \'setup_theme\' );
function setup_theme() {
  ... other code...
  add_shortcode( \'test\', \'test_shortcode\' );
  ... other code ...
}
我需要从此短代码中删除custom\\u function()。

谢谢你的帮助。。。

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

好吧,我找到了一个方法。为优先级为11(在wpautop之后)的\\u内容筛选器调用函数add\\u shortcode。因此,要删除custom\\u function(),必须借助此过滤器(也具有优先级11)完成。解决方案

add_filter( \'the_content\', \'unhook_custom_function\', 11 );
function unhook_custom_function( $content ) {
  remove_action( \'some_hook\', \'custom_function\' );
  return $content;
}
对我来说效果很好。谢谢大家的想法!

SO网友:hakre

我不想删除和重新添加短代码,因为它之外还有巨大的功能。

这可能无法回答您的问题,但短代码函数本身的大小对删除和重新添加没有多大影响。在这里,短函数或长函数占用相同的时间。

所以不要妨碍自己删除短代码(remove_shortcode) 由于函数的大小(巨大),如果要删除它,只需将其删除,无论它有多大:

remove_shortcode(\'test\');

SO网友:SickHippie

你考虑过吗remove_action( \'some_hook\', \'custom_function\');?

SO网友:Funkyphenix Funky the fisrt

在上找到下面的代码https://gist.github.com/1887242

if ( ! function_exists( \'shortcode_exists\' ) ) :
/**
 * Check if a shortcode is registered in WordPress.
 *
 * Examples: shortcode_exists( \'caption\' ) - will return true.
 *           shortcode_exists( \'blah\' )    - will return false.
 */
function shortcode_exists( $shortcode = false ) {
    global $shortcode_tags;

    if ( ! $shortcode )
        return false;

    if ( array_key_exists( $shortcode, $shortcode_tags ) )
        return true;

    return false;
}
endif;
似乎它能完成任务;-)

结束

相关推荐

在Add_ShortCode()回调函数中使用分解时出现问题

Explode在add\\u shortcode()回调函数中未按预期工作。Here is the scenario:我实现的sortcode如下所示:[table] name1 = value1; name2 = value2; name3 = value3 [/table] 我用简单的分解来制作表格。正在爆炸; 获得每一行,然后爆炸= 把它们放在右栏。但是explode没有正常工作。它在\", - 等等我已经在wordpress外部测试