Shortcodes dentro de um shortcode – wordpress

Eu criei um shortcode que exibe os funcionários, o HTML parece algo assim:

 

Então eu criei 2 códigos curtos:

[start_employee] – que contém

    ..

[empregado] – que contém conteúdo sobre o empregado

E deve funcionar assim:

 [start_employee] [employee img=".." name=".." description=".."] [employee img=".." name=".." description=".."] [/start_employee] 

Mas quando eu coloco no editor wordpress o html parece assim:

 
    [employee img=".." name=".." description=".."] [employee img=".." name=".." description=".."]

Eu acho que sei por que … porque a fuunção do start_employee contém:

 return '
    '.$content.'
';

O que devo fazer que leia como um código curto?

Obrigado.

Os do_shortcode($content) não aninham automaticamente – você deve chamar do_shortcode($content) você mesmo. Veja o exemplo caption_shortcode() em http://codex.wordpress.org/Shortcode_API .

Você precisa usar shortcodes recursivamente para obter o resultado.

 function start_employee($attr,$content){ return '
    '.do_shortcode($content).'
'; } add_shortcode("start_employee","start_employee"); function employee($attr,$content){ return '
  • name
    ;

    description

  • '; } add_shortcode("employee","employee");

    Se você tiver uma function recursiva configurada, como no Cart66, você pode fazer algo como isto:

     echo do_shortcode('[hide_from level="membership" ]You may only order this item if you are a member. Become a member.[/hide_from]'); echo do_shortcode('[show_to level="membership"]'.do_shortcode('[add_to_cart item="'.$prefix.get_post_meta($post->ID,'_et_cart66_product_id',true).'" ]').'[/show_to]');