Problem with shortcode inside a shortcode

Here’s a trick that wp-includes/media.php uses for the embed shortcode: first remove all shortcodes, then add a specific shortcode back to the system, filter your content for it, then re-register the original shortcodes.

Try this:

function etdc_tab_group( $atts, $content ){
  global $shortcode_tags;
  $GLOBALS['tab_count'] = 0;

  // save the shortcode registrations
  $orig_shortcode_tags = $shortcode_tags;
  // remove them all
  remove_all_shortcodes();
  // add ours back in
  add_shortcode( 'tab', 'etdc_tab' );
  $content = do_shortcode( $content );
  // restore original shortcodes
  $shortcode_tags = $orig_shortcode_tags;

  //...rest of the function...
}

Actually, now that I’m looking at that etdc_tab_group() function more closely, I’m suprised it’s not breaking something… Did you copy and paste it directly, or did you edit anything out? Because it’s never passing $content back out again.

So first thing I’d try is just commenting out the do_shortcode() call and see how that works. If that breaks something else, then try the method above?