Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shortcodes inside a shortcode - wordpress

Tags:

php

wordpress

I created a shortcode which display the employees, the HTML look somthing like that:

<ul class="employees">

<li><img src=""> <h5>name</h5> <p>description</p></li>
<li><img src=""> <h5>name</h5> <p>description</p></li>
..

</ul>

So I created 2 shortcodes:

[start_employee] - which contains <ul class="employee"> .. </ul>

[employee] - which contains content about the employee

And it should work like that:

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

but when I put it in the wordpress editor the html look like that:

<ul class="employee">
[employee img=".." name=".." description=".."] 
[employee img=".." name=".." description=".."]
</ul>

I think I know why.. because the fuunction of start_employee contain:

return '<ul class="employee">'.$content.'</ul>';

What should I do that it read it as a shortcode?

Thank you.

like image 887
Luis Avatar asked Sep 07 '25 13:09

Luis


2 Answers

Shortcodes do not automatically nest -- you have to call do_shortcode($content) yourself. See the caption_shortcode() example on http://codex.wordpress.org/Shortcode_API.

like image 177
Peter Rowell Avatar answered Sep 09 '25 03:09

Peter Rowell


You have to use shortcodes recursively to get the result.

function start_employee($attr,$content){
          return '<ul class="employee">'.do_shortcode($content).'</ul>';
}
add_shortcode("start_employee","start_employee");

function employee($attr,$content){
          return '<li><img src=""> <h5>name</h5>; <p>description</p></li>';
}
add_shortcode("employee","employee");
like image 22
Rakhitha Nimesh Avatar answered Sep 09 '25 05:09

Rakhitha Nimesh