When working with conditional shortcodes it’s often useful to have a series of tests, one after another, where each test determines if the user is qualified to continue to the next test.
Due to a limitation in WordPress’s design, the built-in shortcode system is very fast but it does not know how to count levels of nesting, so it cannot match each opening tag with its correct closing tag. In order to cleanly support this feature while not sacrificing performance, we provide the ability to nest shortcodes by giving each nested group of shortcodes a unique name by adding a number to the end. You can think of this like a Russian Matryoshka doll.
Some basic rules of nesting shortcodes:
Not all shortcodes can be nested. Only conditional shortcodes are ever made to be nested. There is no reason to nest a non-conditional shortcode.
Not all shortcodes can be nested the same number of times. A few simple shortcodes which perform very simple test can only be nested a few times since their tests are very limited.
There is a limited number of times that any given shortcode can be nested.
To nest a shortcode simply add a number to the end of the shortcode name. Similarly for [else_ and closing shortcode markup, you would add the matching number as well.
Some examples:
[memb_is_logged_in] [memb_is_logged_in1] [memb_is_logged_in2] [else_memb_is_logged_in2] [/memb_is_logged_in2] [else_memb_is_logged_in1] [/memb_is_logged_in1] [else_memb_is_logged_in] [/memb_is_logged_in]