В общем так и не разобрался я как это делается и пришлось переписать снипет.

Заменил там строку:

$conf['selected'] = ( isset( $post_name[$index] ) && isset( $_POST[ $post_name[$index] ] ) && $_POST[ $post_name[$index] ] == $conf['value'] ? 'selected="selected"' : '' );

на

if (isset( $selected )) { $conf['selected'] = ( isset( $selected ) && ($selected == $conf['value']) ? 'selected="selected"' : '' ); } else { $conf['selected'] = ( isset( $post_name[$index] ) && isset( $_POST[ $post_name[$index] ] ) && $_POST[ $post_name[$index] ] == $conf['value'] ? 'selected="selected"' : '' ); }

И теперь если в вызове сниппета есть параметр &selected то значение, которое будет помечаться как selected будет браться именно из него, иначе же будет смотреть в POST запрос.

Вызов сниппета:

[[!shkOptions? &get=`delivery` &post_name=`shk_delivery` &selected=`Сочи (Центр)` // ваше значение которое будет помечаться как selected &toPlaceholders=`1` &pl_prefix=`shkopt_` &tpl=`select_option`]] [[!+shkopt_delivery]] // плейсхолдер