有两个钩子,widget_text 和dynamic_sidebar_params. 您可以使用其中一个。
add_filter( \'widget_text\', \'wpse219770_filter_widget_text\', 1, 3 );
function wpse219770_filter_widget_text( $widget_text, $instance, $widget )
{
$tag = \'bartag\';//shortcode tag
if ( \'text-2\' == $widget->id && has_shortcode( $instance[\'text\'], $tag ) )
remove_shortcode( $tag );
else
add_shortcode( $tag, \'bartag_func\' );
return $widget_text;
}
或者您可以使用以下方法:
add_action( \'dynamic_sidebar_params\', \'wpse219770_dynamic_sidebar_params_hook\', 1, 1 );
function wpse219770_dynamic_sidebar_params_hook( $content )
{
//print_r( $content ) and use it for conditional
$tag = \'bartag\';
if ( shortcode_exists( $tag ) )
remove_shortcode( $tag );
return $content;
}