我想你只是通过了ct_training_group
另一个调用do_shortcode()
? 您不能向它传递额外的参数,因此如果您不想使用全局状态变量,您可以始终替换ct_training
用一个不增加额外费用的<ul>
. 处理程序似乎没有缓存,因此不会有性能损失。
add_shortcode(\'ct_training\', \'ct_training_full\');
function ct_training_full($attr, $content)
{
return \'<ul>\' . ct_training_item($attr, $content) . \'</ul>\';
}
function ct_training_item($attr, $content)
{
return \'<li>CT Training</li>\';
}
add_shortcode(\'ct_training_group\', \'ct_training_group_handler\');
function ct_training_group_handler($attr, $content)
{
$output = \'<h3>CT Training group</h3>\';
$output .= \'<ul>\';
// Redefine the sub-code
add_shortcode(\'ct_training\', \'ct_training_item\');
$output .= do_shortcode($content);
// Reset the sub-code
add_shortcode(\'ct_training\', \'ct_training_full\');
$output .= \'</ul>\';
return $output;
}