<div>[shortcode]</div>
то в реальности с echo ты получаешь [shortcode]<div></div>
. Если ты делаешь не вывод а возврат через return то [shortcode] выводится в правильном месте, но ты можешь вывести только 1 элемент. А задача вывести несколько элементов массива при условие - if. Так же ты учитываешь что не можешь написать $a = 5; $b = 9 и потом сделать return array($a, $b), просто потому что как это сделать когда - ты вытягиваешь значения через foreach с условие if
Пасибо Большое! Все таки здорово когда есть не замыленный взгляд.